簡體   English   中英

sed命令反向打印文件會跳過最后一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM