shell編程(七)--- sed的用法

來源:互聯網
上載者:User

標籤:sed

sed:稱為流編輯器,也稱為行編輯器。

sed處理過程:sed讀取源檔案中的一行,並將其放在臨時緩衝區中,這個緩衝區稱為模式空間,使用相應的模式對模式空間進行處理,並將處理的結果顯示到螢幕上,並不會影響源檔案,處理結束後,將模式空間中的內容顯示至螢幕。


sed格式:

sed [options] ‘AddressCommand‘ file ...options:-n:靜默模式,不顯示模式空間中的內容,預設顯示預設空間中的內容。常和p命令一起使用。-i:直接修改源檔案的內容。-e ‘AddressCommand‘ -e ‘AddressCommand‘:同時執行多個指令碼。-f:指定sed指令檔的路徑。-r:預設情況下,sed只支援基本的Regex,如果要使用擴充運算式,需要用-r選項。

Address格式

1.StartLine,EndLine如:1,100:表示的是從第一行到第100行。$:表示的是最後一行。2./RegEXP/Regex。如:/^root/以root開頭的行。3./pattern1/,/pattern2/表示的是從第一次被pattern1模式比對的行開始,到第一次配patter2匹配的行結束,中間的所有行。4.LineNumber表示的一個指定的行號。5.StartLine,+N表示的是從startline行開始,向後的N行,總共N+1行,包括當前行和後面的N行。


Command格式

d:刪除合格行。p:顯示合格行。a \"string":在指定的行後面追加新行,內容為string。如果想追加多行的話,需要使用\n。

樣本:

[[email protected] tmp]# cat bond0 | sed ‘/USERCTL/a \Hello1\nHello2‘DEVICE=bond0BOOTPROTO=noneONBOOT=yesTYPE=EthernetIPADDR=172.17.100.252NETMASK=255.255.255.0GATEWAY=172.17.100.2USERCTL=noHello1Hello2IPV6INIT=yes[[email protected] tmp]#
i \string:在指定行的前面添加新行,內容為string。添加多行,使用\n。r file:在指定行的後面讀取file檔案的內容並添加到行後。w file:將指定範圍內的內容另存至file檔案中。s/pattern/string/ :將pattern匹配到的內容替換為string。只對每行中第一個被模式比對到的字串進行替換。s/pattern/string/g :將pattern匹配到的內容替換為string。對每行中的所有被匹配的模式進行替換。s/pattern/string/i :將pattern匹配到的內容替換為string,在尋找時,忽略大小寫。注意:s後面的/可以是分隔字元,其他的很多字元也都可以作為分隔字元,如s#root#frame#g這種格式。


pattern中的元字元

^:行首定位器。如/^my/表示匹配所有以my開始的行。$:行尾定位器。如/my$/表示匹配所有以my結尾的行。.:匹配除分行符號以外的任意單個字元。如/m..y/  匹配包含字母m,後跟兩個任一字元,再跟字母y的行。*:表示匹配前一個字元出現0次或多次。如/my*/  匹配包含字母m,後跟零個或多個y字母的行。[]:表示匹配範圍內的任意一個字元。如/[Mm]y/  匹配包含My或my的行。[^]:表示匹配不再指定範圍外的任意一個字元。如/[^Mm]y/  匹配包含y,但y之前的那個字元不是M或m的行。\(..\):儲存已匹配的字元。如1,20s/\(you\)self/\1r/  標記元字元之間的模式,並將其儲存為標籤1,之後可以使用\1來引用它。最多可以定義9個標籤,從左邊開始編號,最左邊的是第一個。此例中,對第1到第20行進行處理,you被儲存為標籤1,如果發現youself,則替換為your。&:儲存尋找串以便在替換串中引用。如s/my/**&**/  符號&代表尋找串。my將被替換為**my**\<:詞首定位器。如/\<my/  匹配包含以my開頭的單詞的行。\>:詞尾定位器。如/my\>/  匹配包含以my結尾的單詞的行。x\{m\}:連續m個x。如/9\{5\}/ 匹配包含連續5個9的行。x\{m,\}:至少m個x。如/9\{5,\}/  匹配包含至少連續5個9的行x\{m,n\}。至少m個,但不超過n個x。如/9\{5,7\}/  匹配包含連續5到7個9的行如下這些同樣可用:[:alnum:]  [:alpha:]  [:blank:]  [:cntrl:][:digit:]  [:graph:]  [:lower:]  [:print:][:punct:]  [:space:]  [:upper:]  [:xdigit:]





本文出自 “HeZhang” 部落格,請務必保留此出處http://hezhang.blog.51cto.com/1347601/1435548

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.