所謂緩衝區是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...