天天看點

Shell之sed指令

  sed用于一次性處理所有的編輯任務,尤為高效,為使用者節省了大量的時間,sed适用于以下三種場合:

 1、編輯相對互動文本編輯器而言太大的檔案;

  2、編輯指令太複雜,在互動式文本編輯器中難以輸入的情況;

  3、對檔案掃描一遍,但是需要執行多個編輯函數的情況;

  sed 隻是對緩沖區中原始檔案的副本進行編輯,并不編輯原始的檔案。是以,如果需要儲存改動内容,需要将輸出重定向到另一個檔案,可以使用下面格式的指令:

    sed  'sed指令'  input_file > result_file

 該指令将sed 指令對input-file的更改儲存到result-file中,“>”符号是重定向符号;

 調用sed的三種方式:

    1、在shell中直接調用sed,格式為:sed  [選項]  'sed指令'   輸入檔案  //必須用單引号引起sed指令

    2、将sed指令插入腳本檔案後,然後通過sed指令調用它,格式為:

        sed   [選項]   -f    sed腳本   輸入檔案

    3、直接執行sed腳本,格式為:

         ./sed 腳本檔案  輸入檔案

  sed指令辨別對文本進行如何處理。如列印、删除、追加、插入、替換等

  sed   -n  '1p'  input    //僅僅列印input的第一行; 若不帶-n選項,則不僅僅列印第1行,還會列印input的全部内容;

  sed   -n  '3, 6p'  input     //僅僅列印第3-6行

  使用/pattern/方法進行模式比對

    sed  -n  '/Certificate/p'  input    //列印比對Certificate的行,大小寫敏感

    sed  -n  /Certificate/,  6p' input    //列印比對Certificate的行 到 6 之間的行  

   sed編輯指令 a\ 符号用于追加文本,它可以将指定文本的一行或多行追加到指定行後面。如果不指定文本追加位置,sed預設放置到每一行的後面,追加文本的格式為:

     sed  '指定位址a\text'  輸入檔案

    注:指定位址以比對模式/pattern/或行号的形式給出,用于定位新文本的追加位置,sed對\a後的文本進行追加操作(增加新的一行);

    特别注意:sed完成追加文本功能後,隻是将結果輸出到标準輸出,原始檔案并沒有做任何改變;

  "$"符号,在正規表達式中表示行尾,特别注意的是,在sed中, "$"表示最後一行;

  sed  -n  '2, 10!p'  input  //表示列印出非2--10行的行;

  插入文本:sed   '指定位址i\text'   輸入檔案  //與“a\”剛好相反,在指定位置所在行之前行拆入text; (text是新的一行)