文本处理工具sed
sed:stream Editor流編輯器,默認(rèn)不編輯原文件,僅對(duì)模式空間中的數(shù)據(jù)做處理;而后,處理結(jié)束后,將模式空間打印至屏幕。
語法:
option選項(xiàng)有:
-n :靜默模式,不再顯示模式空間的內(nèi)容-i :直接修改源文件-r :使用擴(kuò)展正則表達(dá)式Address常用的匹配范圍:
1、startLine,endLine如:1,100 表示從第一行到100行,$表示最后一行2、/RegEXP/ 正則匹配,將匹配到的行顯示出來如:/root/ 將匹配到有root的行顯示3、/pattern1/,/pattern2/,從第一次匹配到pattern1開始到匹配到pattern2的行結(jié)束的中間的行4、LineNumber匹配指定的行5、startLine,+N,從startLine開始,往后的N行command常用命令
d:刪除匹配到的行p:顯示符合條件的行a \string :在匹配當(dāng)?shù)男泻竺孀芳觭tring的內(nèi)容i \string : 在匹配當(dāng)?shù)男星懊嫣砑觭tring的內(nèi)容r file :將file文件的內(nèi)容添加到匹配到的行出w file :將匹配到的行添加到file文件中s/pattern/string/修飾符 :將匹配到的pattern替換成string,默認(rèn)是替換第一個(gè)被匹配到的常用的修飾符有:i :忽略大小寫g :全局替換如:
1、刪除/etc/grub.conf文件中行首的空白符;
2、替換/etc/inittab文件中"id:3:initdefault:"一行中的數(shù)字為5;
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab3、刪除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab4、刪除/etc/inittab文件中開頭的#號(hào);
sed -r 's@^#@@g' /etc/inittab5、刪除某文件中開頭的#號(hào)及后面的空白字符,但要求#號(hào)后面必須有空白字符;
sed -r 's@^#[[:space:]]+@@g' /etc/inittab6、刪除某文件中以空白字符開頭后面跟#類的行中的開頭的空白字符及#號(hào)
sed -r 's@^[[:space:]]+#@@g' /etc/inittab7、取出一個(gè)文件路徑的目錄名稱;如取出/etc/inittab文件的目錄,即/etc
##echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g' echo '/etc/inittab' | sed -r 's#^(/.*)/(.*)#\1#'基名/文件名:
echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'echo '/etc/inittab' | sed -r 's#^(/.*)/(.*)#\2#'需要注意的是,如果要替換原文見的內(nèi)容要加 -i 參數(shù),sed 中的///,可以使用###或@@@等字符代替。
p的 command參數(shù)也要注意下,匹配到的行將會(huì)顯示兩次,沒匹配到的顯示一次,如果顯示兩次的,第一次是 p的的作用將匹配到的行打印出來,第二次是sed命令的作用,會(huì)將模式空間的內(nèi)容顯示出來,所以說沒匹配到的也會(huì)顯示一次,如果想只顯示一次可以加 -n 參數(shù),那么sed命令中模式空間的內(nèi)容不顯示。
轉(zhuǎn)載于:https://blog.51cto.com/13803030/2139500
總結(jié)
- 上一篇: Taro+react开发(81):pro
- 下一篇: 学习语文必须掌握的知识点思维导图