技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類(lèi) >

Linux下sed命令使用全解析

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-02-07 06:10┆點(diǎn)擊:

  一、Sed簡(jiǎn)介

  Sed:Stream Editor 流式編輯器 又稱(chēng)行編輯器,每次只編輯一行。Sed工作是在“模式空間”中進(jìn)行的,并不操作源文件。對(duì)源文件無(wú)危害。

  二、Sed使用格式

  Sed命令的常用格式如下:

  (1)Sed [options] ‘script’ input_file…

  (2)Sed [options] –f script_file input_file…

  (3)Sed [options] ‘ADDR1,ADDR2command’ input_file…

  例如:#sed ’1,2d’ fstab 就可以將fstab的前兩行刪除并顯示出來(lái),但是它不會(huì)改變?cè)次募?/p>

  #Sed ‘1,2!d’ fstab 表示刪除除第一行和第二行之外的所有行。

  (4)Sed [options] ‘/PATTERN/command’ input_file……

  &:s/l..e/&er/:表示引用前面匹配到的所有字符。

  例如:sed ‘/[[:upper:]]/d’ binary.sh 表示刪除所有的大寫(xiě)字母的行。

  (5)Sed ‘/PATTERN1/,/PATTERN2/command’ input_file……

  說(shuō)明:這表示從第一次被PATTERN1匹配到的行到第一次被PATTERN2匹配到的中間的所有行執(zhí)行command命令。

  三、Sed的常用選項(xiàng):

  -n:只顯示sed匹配到的行。其余行不顯示。下文有范例。

  -i :可以直接操作原文件。默認(rèn)情況下sed不會(huì)改變?cè)募?i選項(xiàng)可以修改原文件,此選項(xiàng)應(yīng)慎用。

  -r:可以使用標(biāo)準(zhǔn)正則表達(dá)式。默認(rèn)情況下sed只支持基本正則表達(dá)式,但是加上-r選項(xiàng)后則支持?jǐn)U展正則表達(dá)式

  -e:多腳本共用??梢酝瑫r(shí)執(zhí)行多個(gè)命令。例如:

  代碼如下:

  [root@localhost ~]# sed -e 's@@H1@g' -e 's@(l..e).@1r.@g' test

  He love His lover.

  She like Her liker.

  Dove love Her liker.

  也可以這樣用,中間用分號(hào)隔開(kāi):

  代碼如下:

  [root@localhost ~]# sed 's@@H1@g;s@(l..e).@1r.@g' test

  四、使用示例

  代碼如下:

  #sed -e 命令行處理 -a 新增

  > sed -e '$ a widuu' test.txt #在test.txt的結(jié)尾處添加widuu

20151026113212056.png (426×100)


  代碼如下:

  # 把-e換成-n

  > sed -n '$ a widuu' test.txt # 只顯示被處理的一行

20151026113238876.png (402×48)


  代碼如下:

  # -c 替換多少行 為你制定的字符串,這里我的test.txt內(nèi)容如圖

  > sed -e '2,5c xiaowei' test.txt #把2-5行替換成字符串xiaowei

20151026113258767.png (465×267)


  代碼如下:

  # 多命令執(zhí)行 -e

  > sed -e '2,5c xiaowei' -e 's/cccc/widuu/' test.txt

20151026113315497.png (599×134)


  代碼如下:

  # -i 不輸出 -s 替換

  >sed -i 's/111111/widuu/g' test.txt

20151026113350275.png (535×319)


  代碼如下:

  # i 插入 自定義的字符串 在test.txt的第二行插入xiaowei

  > sed -e '2i xiaowei' test.txt

20151026113425957.png (508×321)


  代碼如下:

  # d 刪除輸入任何字符串

  > sed -e '2d' test.txt #刪除第二行

20151026113448647.png (432×290)