為了驗證d命令後的語句是否會執行,寫了如下例項,(其中=表示輸出當前行號,=;=表示輸出當前行號兩次):
[work@ test_sed]$ seq -f"%05g" 1 6 | sed -n ':a;n;p;=;d;n;p;=;=;ba'
00001
00002
200002
00003
300003
00004
400004
00005
500005
00006
6可以發現行號並沒有連續輸出兩次,所以語句執行到d後,後面的「n;p;=;=;ba」並沒有執行,去掉上面命令中第乙個n,執行如下:
[work@ test_sed]$ seq -f"%05g" 1 6 | sed -n ':a;p;=;d;n;p;=;=;ba'
00001
100002
200003
300004
400005
500006
6可以發現,語句執行到d後,後面的「n;p;=;=;ba」並沒有執行,去掉前面命令中的d,執行如下:
[work@ test_sed]$ seq -f"%05g" 1 6 | sed -n ':a;n;p;=;n;p;=;=;ba'
00001
00002
200001
00002
0000333
00001
00002
00003
00004
400001
00002
00003
00004
0000555
00001
00002
00003
00004
00005
00006
6去掉d命令後,可以發現後面的「n;p;=;=;ba」執行了。所以,d命令將結束本輪sed語句,開始下乙個迴圈。d命令後的語句將不再執行。另,d(delete pattern space. start next cycle.)命令也是一樣:
[work@ test_sed]$ seq -f"%05g" 1 6 | sed -n ':a;n;p;=;d;n;p;=;=;ba'
00001
00002
200003
00004
400005
00006
6
sed命令使用簡單記錄
sed s pattern replace string file sed.txt中對每行的第乙個lifeng用lf替換 sed s lifeng lf sed.txt 原始檔內容不會變的 要替換所有內容,命令尾部加引數g sed s lifeng lf g sed.txt 要從每行的第二處內容進行...
sed命令使用
sed命令使用 常用選項 n 使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入 n 後只列印被 sed 特殊處理的行 e 多重編輯,且命令順序會影響結果 f 指定乙個 sed 指令碼檔案到命令列執行,r sed 使用擴充套件正則 i 直接修改文件讀取的內容,不在螢幕上輸出 sed操...
sed命令使用
常用選項 n 使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入 n 後只列印被 sed 特殊處理的行 e 多重編輯,且命令順序會影響結果 f 指定乙個 sed 指令碼檔案到命令列執行,r sed 使用擴充套件正則 i 直接修改文件讀取的內容,不在螢幕上輸出 sed操作命令 sed ...