用法:
sed? [選項]… ‘script’ inputfile
其中script是腳本基于sed語法的腳本 ? ? ? ? ? ? ? ? inputfile文件內容
常用選項
-n ? :不輸出模式空間內容到屏幕,即不自動打印
-e ? :多點編輯
-f ?? : ? /PATH/SCRIPT_FILE:從指定文件中讀取編輯腳本
-r ?? :支持擴展正則表達式
-i .bak :備份文件并原處編輯
把原文件做一個帶.bak的備份文件 ? ? ?? 然后就不怕對原文件修改出錯了
script ? :? 腳本包括兩部分 ?? 1 地址 ? ? 2 命令
‘地址命令’
? ? ? 地址定界
1不給地址 :? 對全文處理
2單地址
#:指定的行, ? 第#行 ? ?? $:最后一行
/pattern/: 被此處模式所匹配的行 ? ? ? ?? 模式就是關鍵字 詞 等
默認sed使用基本正則 ? ? /基本正則/
3地址范圍:
#,# ? ? ? ? ? ?? 從第#行 到 第#行
#, +# ? ? ? ? ?? 從第n行 到 第n+m行
/pat1/,/pat2/ ? ? ? ? ?? 從匹配模式1的行? 到? 匹配模式2的行
#,/pat1/ ? ? ? ? ? 從第#行 ? 到 ? 匹配模式1 的行結束
4~ :步進
1~2 ? 奇數行
2~2 ?? 偶數行
?? 編輯命令
d:刪除模式空間匹配的行,并立即啟用下一輪循環
p :打印當前模式空間的內容,追加到默認輸出之后
#sed ?? ‘2p’ ? ? ?? 文件 ? ? ? ? ? ? ? ?? 會打印兩遍第二行 ? ? 如果只想打印第二行可以
#sed ?? -n ?? ’2p‘ ?? 文件
a [\]text :在指定行后面追加文本
支持使用\n實現多行追加
i [\]text : 在行前面插入文本
#sed ?? ‘2,5i\ ? ?? ===’ ?? f1
c [\] texr: 替換行為單行或多行文本
w? /path/somefile :保存模式匹配的行至指定文件
把符合條件的行存到文件里
r /path/somefile? :讀取指定文件的文本至模式空間中匹配到的行后
=:為模式空間中的行打印行號 ? 只顯示行號
?。耗J娇臻g中匹配 行取反處理
?? 示例
sed ?? ‘2p’? /etc/passwd ? ? ? ? 顯示第二行 ? 但是會默認全打印所以有兩個第二行
sed ?? -n ? ‘2p’? /etc/passwd ? ? 與上一條相反 ? 只顯示第二行
sed ?? -n ? ‘1,4p’? /etc/passwd ? ? ? ? 只打印第一行到第四行
sed ?? -n ? ‘/root/p’? /etc/passwd ? ? ? 打印包含root的行
sed ?? -n ? ‘2,/root/p’? /etc/passwd ? 從2行開始? 到含有root的行
sed ?? -n ? ‘/^$/=’? file ? ? 顯示空行行號
sed? -n ?? -e ?? ‘/^$/p’ ? -e? ‘/^$/=’ ? ?? file ? ?? 空行顯示行號并把行也打印出來
sed ? ? ‘/root/a\superman’ ? ? /etc/passwd ? ? 行后 ? ? 在包含root的行后 打印字符串superman
sed ? ? ‘/root/i\superman’ ? ? /etc/passwd ? ?? 行前 ? ? ? ? ? ? ? ? ? ? ? ?? 行前
sed ? ? ‘/root/c\superman’ ? ? /etc/passwd? 代替行
sed ? ? ‘/^$/d’ ? ? ? file ? ? ? ?? 刪除空行
sed ? ‘1,10d’ ? ? ? file ? ? ? ? 刪除1到10行
nl ? /etc/passwd? |sed ? ‘2,5d’ ? ? ? ? 刪除第2行到第5行
nl ?? /etc/passwd? | sed? ‘2a? tea’ ? ? ? ?? 在第2行后面追加單詞 ? tea? 或字符 ? tea
sed ? ‘s/test/mytest/g’ ? example ? ? ? ? ?? 搜索 ?test ? ? ? ?? 替代 ?mytest
sed ?? -n ? ‘s/root/&superman/p’ ? /etc/passwd? 單詞后 ? ? 搜索 root? 替代rootsuperman ? ? ?? &相當于 表示前面的root
sed ? ? -n ?? ‘s/root/superman&/p’? /etc/passwd? 單詞前
sed ? ? -e ?? ‘s/dog/cat/’ ? ? ? ? -e ? ?? ‘s/hi/lo/’ ? ?? pets ? ? ? ? 多點替換
sed ? ?? -i.bak ? ? ‘s/dog/cat/g’ ? ? ?? pets ? ? ? ? ? 把文件改了
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95889