隨手筆記NO.6

sed命令(流編輯器)

他是一個行編輯器,它將內容的每一行逐行讀取到內存中,在內存中完成編輯,而後將結果輸出到屏幕上

sed 的基本用法

sed [options] 'AddressCommand' file ...
options 
    -n: 靜默模式,再也不默認顯示模式空間中的內容
    -i: 直接修改原文件
    -e SCRIPT -e SCRIPT:能夠同時執行多個腳本
    -f /PATH/TO/SED_SCRIPT
        sed -f /path/to/scripts  file
    -r: 表示使用擴展正則表達式

Address:
一、StartLine,EndLine
    好比1,100
    $:最後一行
二、/RegExp/      #使用正則表達式,來指定模式
    /^root/
三、/pattern1/,/pattern2/
    第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的全部行
四、LineNumber
    指定的行
五、StartLine, +N
    從startLine開始,向後的N行;

Command:
    d: 刪除符合條件的行;
    p: 顯示符合條件的行;
    a \string: 在指定的行後面追加新行,內容爲string
        \n:能夠用於換行
        [loveyu@feitian ~]$  sed  '/^\//a \# hello world' /etc/fstab  以/開頭的行,在後面添加新行。
    i \string: 在指定的行前面添加新行,內容爲string
    r FILE: 將指定的文件的內容添加至符合條件的行處
        [loveyu@feitian ~]$ sed  '2r /etc/issue' /etc/fstab  在/etc/fstab文件的第二行後面加上/etc/issue的整個文件內容
    w FILE: 將地址指定的範圍內的行另存至指定的文件中; 
        [root@feitian script]# sed  '/oot/w  /tmp/oot.txt' /etc/fstab 將/etc/fstab中包含oot的行另存爲/tmp/oot.txt中
    s/pattern/string/修飾符: 查找並替換,默認只替換每行中第一次被模式匹配到的字符串
        加修飾符
        g: 全局替換
        i: 忽略字符大小寫
    s///: s###, s@@@    
        \(\), \1, \2
    &: 引用模式匹配整個串

下面兩個簡單的例子

  • 將以l開頭以e結尾的字符串後面加上r
    [root@feitian mnt]# sed 's#(l..e)#&r#g' hehe.txt
    [root@feitian mnt]# sed 's#(l..e)#\1r#g' hehe.txt
    l..e: like-->liker
    love-->lover
  • 就匹配到的字符串的l替換成L [root@feitian mnt]# sed 's#l(..e)#L\1r#g' hehe.txt #注意這個時候不能使用&好,只能使用後向引用like-->Likelove-->Love
相關文章
相關標籤/搜索