1. 程式人生 > >LINUX學習—sed命令(LINUX三劍客)

LINUX學習—sed命令(LINUX三劍客)

sed

sed基本用法

sed( stream Editor)是一種流編輯器,預設不編輯原檔案,僅對模式空間中的資料做處理,而後,處理結束後,將模式空間列印至螢幕;
sed主要用來自動編輯一個或多個檔案;簡化對檔案的反覆操作;編寫轉換程式等。
行編輯器:逐行處理(全屏編輯器如vi)
語法: sed [option] ‘AddressCommand’ file…

Option:
    -n:靜默模式 ,不再預設顯示模式空間中的內容,只顯示符合條件的行  
    -i:直接修改原檔案,慎用  
    -e SCRIPT -e SCRIPT:可以同時執行多個指令碼;
    -f /PATH/TO/SED_SCRIPT:指定檔案,也可以執行多個指令碼;  
        sed -f /path/to/scripts file 
  表示使用擴充套件正則表示式

Address:
    1、StartLine, EndLine
        如1,100
        $:表示最後一行
    2、 使用正則表示式來指定模式 /RefExp/ 
        如:/^root/
    3、 /pattern1/, /pattern2/
        第一次被pattern1匹配到的行開始,至第一次被pattern2匹配到的行結束,這中間的所有行;
    4、LineNumber
        指定的行
        $:表示最後一行  
    5、StartLine, +N  
        從StartLine行開始,向後的N行

Command:
    d:刪除符合條件的行:  
    p:顯示符合條件的行;  
    a \string: 在指定的行後面追加新行,內容為string  
        \n:可以擁有換行  
    i \string: 在指定的行前面新增新行,內容為string  
    r FILE:將指定檔案內容新增至符合條件的行處  
    w FILE:將地址指定範圍內的內容另存至指定的檔案中;  
    s/pattern/string/修飾符: pattern中可以用正則表示式,而string不行,查詢並替換,預設只替換每行中第一次匹配到的字串;  
        加修飾符  
            g:全域性替換
            i:忽略字元大小寫
    也可以用其他分隔符代替/,只要保持三個統一就行,如s###,
[email protected]
@@ 後項引用仍然適用:\(\), \1,\2 &: 引用模式匹配到的整個串 l...e: like-->liker love-->lover (sed '/l..e/&r/g' file.txt) like-->Like love-->Love (sed '#l/(..e/)#L\1#g' file1) 不能完全匹配字串時不能用&便只能用後項引用。