[英]Sed command to reverse print a file skips last line
我正在嘗試使用sed
反向打印文件(例如,我知道它可以通過多種其他方式完成,例如tac
)。 這是我到目前為止所得到的:
sed -n -r '/.+/{x;H;$p}' nums
文件nums
包含在每一行的數,為1〜25的邏輯此,每個號碼首先被復制到holdspace
,而內容holdspace
被復制到patspace
通過x;
。 因此,現在holdspace
包含當前數字,而patspace
包含patspace
的數字,其順序相反。 然后H;
將直到現在為止經過的數字列表追加到holdspace
,以便最新的數字始終保持在最前面。 最后,當到達最后一行時,它最后一次完成,並通過$p
打印出來。
但是,該命令僅以相反的順序輸出數字24到1。 第一行應該是25,但是不知何故該行被跳過了。
誰能告訴我這段代碼是什么問題?
您缺少最后一個x
。 您將最后一行的內容交換到保留空間中,但是在打印之前,請不要將其拉回。
sed -n -r -e '/.+/{x;H}' -e '${x;p}'
您還會得到一個額外的空白行,因為您確實不想在第一行上執行'H',因為這樣可以保留保留空間的初始空白內容。 我會這樣做:
sed -n -r -e '/.+/x' -e '2,$H' -e '${x;p}' nums
該sed
應該執行以下操作:
sed '1!G;h;$!d' file
這:
sed -n '1!G;h;$p' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.