sed命令例題

常用選項:

    -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題用替換其他題都需要正則表達式基礎。學了以後再來練習即可 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章