sed使用小結

1. 基本操作.

    a. $ echo "aabbcc" | sed -e 's/bb/dd/'  ###對標準輸入進行替換.

        終端的輸出爲: aaddcc.

    b. $ sed -e 's/aaa/bbb/' 0<$input_file 1>$output_file  ###將輸入文件的所有行首次出現的aaa字符串替換爲bbb.

        's/.../.../g'模式爲每行全替換.

    c. $ echo "aabbcc" | sed -e 's_bb_dd_' #同a.

        可以自由選擇不同的分界符Delimiter, 只要不和找尋的字符串混淆即可.

    d. $ echo "aabbcc" | sed -e 's/cc/## & ##/'      ###’&’可以用來表示模式匹配的字符串.        

        終端的輸出爲: aabb## cc ##.

 

 

2. 擴展.

    a. $ echo "abcdef" | sed 's/./&:/4'   ### . 匹配單一字符, /4表示替換第四次匹配.

    終端的輸出爲: abcd:ef.

 

    b. $ echo "bc" | sed -n 's/a/b/p'    ###/p只打印有匹配成功的行.

    終端的輸出爲:空.

 

    c. $ echo "abc" | sed -n 's/a/b/w output'   ###/w 將匹配的行寫入到文件output, 可爲空.

    文件output 內容: bbc.

 

    d. $ echo "abc" | sed -e 's/a/A/' -e 's/b/B/'  ###通過-e選項, 由sed並行匹配.

    終端的輸出爲:ABc.

 

 

 

 

 

3. 問題:

    a. why difference between:

         echo abcd123ddc | sed 's//([a-z]*/).*//1/'   #輸出爲: abcd

         echo abcd123ddc | sed 's//([a-z]*/).//1/'     #輸出爲: abcd23ddc

    提示: 正則式是最大貪婪性的,第一式的/([a-z]*/) 匹配了abcd, .* 匹配了所有餘下的123ddc; 第二式的/([a-z]*/) 匹配了abcd, .匹配1.  即abcd1被匹配爲abcd.

 

    b. echo "111aaa222bbb333dddd" | sed 's/^[a-z]*//2' not work?

 

 

 

src: http://www.grymoire.com/Unix/Sed.html

發佈了45 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章