sed '/ken2/d' ken.txt  刪除

原來,如果我們sed如果不加任何參數的話,sed只會將檔案內容讀出來,根據SED-SCRIPT對內容做處理,然後將結果output到stdout上,並不會回存到檔案裡,如果你想直接讓檔案內容跟著改變的話,就要加-i這個OPTION

    yctseng@ubuntu:~/sed$ sed -i '/ken2/d' ken.txt
    yctseng@ubuntu:~/sed$ cat ken.txt

===============================================

 1. 取代檔案裡的文字 
    's/{REGULAR-EXPRESSION}/{NEW-PATTERN}/g'
   
    's/ken/amber/g'        將所有ken字串替換成amber
    's/^ken/amber/g'    將所有在行首的ken字串替換成amber,如果ken不是在行首的字串,則不會被取代掉。
    's/ken.*/amber/g'    將所有"ken後面接任意字元任意長度"的字串替換成amber。
    's/a([0-9])b([0-9])/A1B2/g'    將anbn替換成AnBn,n代表0-9任1數字。REGULAR-EXPRESSION中出現的第1個()包起來所mapping到的字串會對應到NEW-PATTERN中的1,第二個對應到2,依此類推。

================================================
2. 刪除某行   
    '/{REGULAR-EXPRESSION}/d'
   
    '/^ken/d'            將ken開頭的那一行刪除
    '/^ken.*amber$/d'    將ken開頭amber結尾的那一行刪除

================================================

3. 在某行前(後)加入新一行的文字
    '/{REGULAR-EXPRESSION}/i{NEW-LINE-INSERTED}'
    '/{REGULAR-EXPRESSION}/a{NEW-LINE-APPENDED}'

    '/#define KEN.*/i#define AMBER'    在含有#define KEN的那一行之前新增#define AMBER這行
    '/#define KEN.*/a#define AMBER'    在含有#define KEN的那一行之後新增#define AMBER這行

==============================

$ sed '1,5 s/ [aA]/ one/' file ←將 1~5 行〝a〞或〝A〞改〝one〞
$ sed '5 s/ [aA]/ one/' file ←只將第 5 行〝a〞或〝A〞改〝one〞
$ sed 's/ [aA]/ one/' file ←省略位址,整個檔案〝a〞或〝A〞改〝one〞

sed -i '4d' test1.txt   //刪除行

echo 'this is a apple' | sed 's/a/AN/' ←將〝a〞改為〝AN〞(只取代搜尋到的第一個樣板就停止)
this is AN apple 

arrow
arrow
    文章標籤
    sed
    全站熱搜

    JL8051 發表在 痞客邦 留言(0) 人氣()