sed:是一種行編輯器,它在處理行時會把要處理的行讀入模式空間中,處理的是模式空間的內容,一行一行的處理,然后把處理結果顯示在屏幕中,不對原文做修改,除非強制重定向。
好處:可同時編輯一個或多個文件,簡化了對文件的反復操作。
sed用法:
格式: sed [options ]…'script' inputfile
常用選項:
-n:不把模式空間的的內容自動打?。ㄖ伙@示匹配行)
-e:同時編輯多個命令時使用
-f /PATH/TO/SCRIPT-FILE:從指定文件中讀取編輯腳本
-r:使用擴展正則表達式
-i:對原文件進行編輯
示例:
-n選項
[root@myhost bin]# sed -n '10p' /etc/passwd 打印/etc/passwd文件中的第十行
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
-e選項
[root@myhost bin]# cat file
lksjjkfl
kjdskjlkj
kdddllkfl
[root@myhost bin]# sed -e 's/l/L/' -e 's/d/D/' file 把file文件中每行第一個l換成L,d換成D
Lksjjkfl
kjDskjLkj
kDddLlkfl
-i選項
[root@myhost bin]# sed -i '1d' file 刪除file原文件中的第一行
[root@myhost bin]# cat file
kjdskjlkj
kdddllkfl
地址定界:
1、不給地址:對全文進行處理
2、單地址:
#:指定的行
/pattern/:被此處模式所能夠匹配到的每一行
3、地址范圍:
#,#:第幾行到第幾行
#,+#:從第#行開始往后+#行
/pat1/,/pat2/ :匹配模式1到模式2之間的行
#,/pat1/:從第#行開始到匹配到模式1這行之間的行
4、~:步進
1~2:奇數行步進
2~2:偶數行步進
編輯命令:
d:刪除模式空間匹配到的行
p:顯示模式空間中的內容
a /text:在行后面追加文本,支持\n實現多行追加
i /text:在行前面追加文本,支持\n實現多行追加
c /text:替換行為單行或多行文本
w /path/to/somefile:保存模式匹配到的行至指定文件中
r /path/to/somefile:讀取指定文件的內容至模式空間中匹配到的行后
=:為模式空間中的行打印行號
!:模式空間中匹配行取反處理
重要編輯命令:
s///:查找替換,支持使用其他分隔符,如:s$$$ s### s@@@
替換標記:
g:行內全局替換
p:顯示替換成功的行
w /path/to/somefile:將替換成功的行保存至文件中
i:不區分大小寫
示例:
[root@myhost bin]# cat file
kjdskjlkj
kdddllkfl
[root@myhost bin]# sed '3d' file 刪除file文件中的第三行
kjdskjlkj
[root@myhost bin]# sed '/^$/a\hellow' file 在file文件中空行的后面添加一行hellow
kjdskjlkj
hellow
kdddllkfl
[root@myhost bin]# sed -n '/^$/=' file 顯示file文件中空行的行號
2
[root@myhost bin]# sed 's/k/&KK/' file 把fiel文件中每行的第一個k替換為kKK
kKKjdskjlkj
kKKdddllkfl
[root@myhost bin]# sed 's/k/KK&/' file 把fiel文件中每行的第一個k替換為KKk
KKkjdskjlkj
KKkdddllkfl
sed工具的高級編輯命令
h:把模式空間中的內容覆蓋至保持空間中
H:把模式空間中的內容追加至保持空間中
g:從保持空間取出數據覆蓋至模式空間中
G:從保持空間中取出內容追加至模式空間中
x:把模式空間中的內容與保持空間中的內容互換
n:讀取匹配到的行的下一行覆蓋至模式空間
N:追加匹配到的行的下一行覆蓋至模式空間
d:刪除模式空間中的行
D:刪除當前模式空間開端至\n的內容(不再傳至標準輸出),放棄之后的命令,但是對剩余模式空間重新執行sed
sed命令練習題:
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文件的 以.分隔倒數第二個字段的重復次數
解答:
1、操作及效果
2、操作及效果
3、操作
前后效果對比
4、操作前
操作后效果
5、操作和效果
6、操作效果
7、用兩種方法
原創文章,作者:ZJM,如若轉載,請注明出處:http://www.www58058.com/33245