sed用于一次性處理所有的編輯任務,尤為高效,為使用者節省了大量的時間,sed适用于以下三種場合:
1、編輯相對互動文本編輯器而言太大的檔案;
2、編輯指令太複雜,在互動式文本編輯器中難以輸入的情況;
3、對檔案掃描一遍,但是需要執行多個編輯函數的情況;
sed 隻是對緩沖區中原始檔案的副本進行編輯,并不編輯原始的檔案。是以,如果需要儲存改動内容,需要将輸出重定向到另一個檔案,可以使用下面格式的指令:
sed 'sed指令' input_file > result_file
該指令将sed 指令對input-file的更改儲存到result-file中,“>”符号是重定向符号;
調用sed的三種方式:
1、在shell中直接調用sed,格式為:sed [選項] 'sed指令' 輸入檔案 //必須用單引号引起sed指令
2、将sed指令插入腳本檔案後,然後通過sed指令調用它,格式為:
sed [選項] -f sed腳本 輸入檔案
3、直接執行sed腳本,格式為:
./sed 腳本檔案 輸入檔案
sed指令辨別對文本進行如何處理。如列印、删除、追加、插入、替換等
sed -n '1p' input //僅僅列印input的第一行; 若不帶-n選項,則不僅僅列印第1行,還會列印input的全部内容;
sed -n '3, 6p' input //僅僅列印第3-6行
使用/pattern/方法進行模式比對
sed -n '/Certificate/p' input //列印比對Certificate的行,大小寫敏感
sed -n /Certificate/, 6p' input //列印比對Certificate的行 到 6 之間的行
sed編輯指令 a\ 符号用于追加文本,它可以将指定文本的一行或多行追加到指定行後面。如果不指定文本追加位置,sed預設放置到每一行的後面,追加文本的格式為:
sed '指定位址a\text' 輸入檔案
注:指定位址以比對模式/pattern/或行号的形式給出,用于定位新文本的追加位置,sed對\a後的文本進行追加操作(增加新的一行);
特别注意:sed完成追加文本功能後,隻是将結果輸出到标準輸出,原始檔案并沒有做任何改變;
"$"符号,在正規表達式中表示行尾,特别注意的是,在sed中, "$"表示最後一行;
sed -n '2, 10!p' input //表示列印出非2--10行的行;
插入文本:sed '指定位址i\text' 輸入檔案 //與“a\”剛好相反,在指定位置所在行之前行拆入text; (text是新的一行)