常用選項:
-n:不輸出模式空間內容到屏幕,即不自動打印
-e:多點編輯
-f:從指定文件中讀取編輯腳本
-r:支持使用擴展正則表達式
-i:修改源文件
編輯命令:
d: 刪除模式空間匹配的行
p: 顯示模式空間中的內容
a [\]text:在指定行後面追加文本支持使用\n實現多行追加
i [\]text:在行前面插入文本
c [\]text:替換行爲單行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:讀取指定文件的文本至模式空間中匹配到的行後
=: 爲模式空間中的行打印行號
!:模式空間中匹配行取反處理
示例1:打印第三行:
sed–n ‘3p’ file
示例2:打印第五行到第十行:
sed–n ‘5,10p’ file
sed-n '5,+5p' file
示例3:打印fstab文件中以U開頭的行
~]# sed -n '/^U/p' /etc/fstab
示例4:顯示文件中的奇數行
~]# sed -n '1~2p' file
示例5:顯示文件中的偶數行
~]# sed -n '2~2p' file
示例6:顯示文件中從a開頭的行到s開頭的行
~]# sed -n '/^a/,/^s/p' file
示例7:顯示文件中從第一行到s開頭的行
~]# sed -n '1,/^s/p' file
示例8:在以a開頭的行後面添加字符串
~]# sed '/^a/a\a new line' file
示例9:先備份再修改
sed -i.bak '/^r/r /etc/issue'/testdir/f1
示例10:顯示帶有root的行
~]# sed -n '/root/p' /etc/passwd
示例11:打印從第2行到第一次匹配到root的行
~]# sed -n '2,/root/p' /etc/passwd
示例12:顯示空行行號
~]# sed -n '/^$/=' file
示例13:打印空行並且把行號也打印出來
~]# sed -n -e '/^$/p' -e '/^$/=' file
示例14:打印出無空行的文件
~]# sed '/^$/d' file
高級編輯命令:
h: 把模式空間中的內容覆蓋至保持空間中
H :把模式空間中的內容追加至保持空間中
g: 從保持空間取出數據覆蓋至模式空間
G :從保持空間取出內容追加至模式空間
x: 把模式空間中的內容與保持空間中的內容進行互換
n: 讀取匹配到的行的下一行 覆蓋 至模式空間
N :追加匹配到的行的下一行至模式空間
d: 刪除模式空間中的行
D :刪除 當前模式空間開端至\n 的內容(不在傳至標準輸出),放棄之後的命令,但是對剩餘模式空間重新執行sed
打印偶數行
sed -n 'n;p' FILE
倒序
sed '1!G;h;$!d' FILE
1!表示不是第一行才做操作(G),是第一行就不做後面的操作(G),
$!表示不是最後一行才做操作(d),是最後一行就不做後面的操作
打印最後兩行
sed '$!N;$!D' FILE
打印最後一行
sed '$!d' FILE
在每行後插入空行
sed ‘G’ FILE
顯示空行
sed ‘g’ FILE
把文件中的空行刪除並在每行後插入空行
sed ‘/^$/d;G’ FILE
顯示奇數行
sed 'n;d' FILE
顯示倒序
sed -n '1!G;h;$p' FILE
思考:
1、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的空白字符
2、刪除/etc/fstab文件中所有以#開頭,後面至少跟一個空白字符的行的行首的#和空白字符
3、在/root/install.log每一行行首增加#號
4、在/etc/fstab文件中不以#開頭的行的行首增加#號
5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名
6、利用sed 取出ifconfig命令中本機的IPv4地址
7、統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重複次數
提示:3、4題用替換其他題都需要正則表達式基礎。學了以後再來練習即可