sed反向輸出

2021-06-28 09:31:40 字數 949 閱讀 4323

所謂緩衝區是sed內部的一段儲存空間

g表示把緩衝內容加到處理行的末尾

h表示把當前行內容放入緩衝區

d是表示刪除當前處理的行,否則預設就會列印該行內容

然後來看下面的例子:

[root@yellzone root]# seq 612

3456

[root@yellzone root]# seq 6|sed '1!g;h;$!d'65

4321

第一行的時候

1!g        在處理第一行的時候不把緩衝內容新增到 當前處理行的末尾(因為你處理第一行的時候,緩衝還為空呢)

h        這個時候把第一行的內容(1)放到緩衝區

$!d        因為不是最後一行,所以刪除,不列印出來

第二行的時候

1!g        因為是第二行,所以1!g成立,則把上一次(第一行)儲存的緩衝區內容(1)放到當前行(2)的末尾,第二行變成了(21)

h        這個時候把第二行的內容(21)放到緩衝區

$!d        因為不是最後一行,所以刪除,不列印出來

第三行的時候

1!g        因為是第三行,所以1!g成立,則把上一次(第二行)儲存的緩衝區內容(21)放到當前行(3)的末尾,第二行變成了(321)

h        這個時候把第三行的內容(321)放到緩衝區

$!d        因為不是最後一行,所以刪除,不列印出來

....

....

....

第六行的時候

1!g        因為是第六行,所以1!g成立,則把上一次(第5行)儲存的緩衝區內容(54321)放到當前行(6)的末尾,第六行變成了(654321)

h        這個時候把第六行的內容(654321)放到緩衝區

$!d        因為是最後一行,所以不刪除,列印出第六行內容 654321

2040 反向輸出序列

time limit 3 second memory limit 2 mb 輸入乙個正整數序列 1 個數 500,所有資料均在整數範圍內 遇負數停止,將正整數序列按輸入順序反向輸出。本題請嘗試使用鍊錶結構完成 多行,為一系列正整數,最後乙個負數作為結束標誌 多行。與輸入順序相反的正整數序列,換行由系...

反向輸出及sort排序

建立條件 include algorithm 引用這個標頭檔案 1 reverse 的用法,反向排序,由自己輸入5個數 1 2 3 4 5 for int i 0 i 5 i cout endl reverse v.begin v.end 執行結果 假如輸入 12 00 33 44 11 依舊是倒序...

輸出sed的重定向

預設情況下,sed編輯器會將進步的結果輸出到stdout上,你可以在shll指令碼中使用所有重訂向sed編輯器輸出的標準方法。你可以在指令碼中用反引號來將sed編輯器命令的輸出重定向到乙個變數中供後面使用。下面是個使用sed指令碼來向數值計算結果新增逗號的例子 檔名為 fact.sh bin bas...