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命令定位文本的方法:
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完成追加文本功能后,只是將結果輸出到標准輸出,原始文件並沒有做任何改變;
1 /bin/sed -f #必須加上-f選項, 若無此選項,腳本執行報錯 2 /test/a\ #a\表示在test所在的行之后添加文本 3 4 #添加內容 5 We append a new line . \ #"\”符號表示換行 6 We append another line.
"$"符號,在正則表達式中表示行尾,特別注意的是,在sed中, "$"表示最后一行;
sed -n '2, 10!p' input //表示打印出非2--10行的行;
插入文本:sed '指定地址i\text' 輸入文件 //與“a\”剛好相反,在指定位置所在行之前行拆入text; (text是新的一行)