1. 程式人生 > >0409 第十二次課:sed

0409 第十二次課:sed

開發十年,就只剩下這套架構體系了! >>>   

sed命令

一、sed命令

  • sed簡介

    sed命令主要用於刪除、查詢替換

  • sed的用法:

    sed命令模式:sed [option] 'sed命令' filename
    
    sed指令碼模式:sed [option] 'sed script' filename
    
  • sed選項:

    -n:只打印匹配到行

    -e:直接在命令列進行編輯,此為預設的選項

    -f: 執行指定指令碼中的script語句

    -i:直接修改檔案中的內容

  • sed動作說明

    a:a的後面可以是字串,這些字串會新增到下一行(目前的下一行)

    c:取代,c的後面可以是字串,這些字串可以取代n1,n2之間的行

    d:刪除

    i:插入,i的後面可以是字串,這些字串會在新的一行出現(目前的上一行)

    p:列印,通常p和 -n一起使用

    s:替換,進行替換,通常s是搭配正則,例如:s/oo/tt/g(把oo替換為tt)

  • 示例:

    1、使用sed進行匹配

    sed -n '/root/'p passwd

    2、sed不區分大小寫匹配

    sed -n '/root/'Ip passwd

    3、刪除1-30(並不會操作檔案)

    sed '1,30'd passwd |wc -l

    4、把第1-5行替換為“111”

    sed '1,5'c'111' passwd

    5、指定行數替換

    sed '1,10s/oo/xx/g' passwd

    6、全域性替換

    sed '$s/oo/xx/g' passwd

    7、把passwd文字以:分割,把第一段和最後一段進行替換

    以第一行為例:

    sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' passwd |head -n 1

    解釋:

    -r :使用擴充套件正則。可以不使用脫意符

    /([^:]+):(.*):([^:]+)/ 以“:”分割為三段。

    第一段([^:]+):,不以:開頭,以:結尾,“+”表示一個或多個字元。對應的輸出結果就是:

    第二段(.): (.)貪婪匹配,以“:”結尾。對應的輸出結果是:

    第三段([^:]+) 不以“:”開頭,“+”表示一個或多個字元。對應的輸出結果就是:

    \1表示第一個()內容,\2表示第二個()內容,\3表示第三個內容

    最終的輸出結果:

    8、在某行插入字元

    在第三行插入‘333’

    sed ‘3’i‘333’