next up previous contents
Next: awk 工具 Up: sed 與 awk 工具 Previous: sed 工具   Contents

sed 與 正規表示法

  1. sed 配合正規表示法進行搜尋 sed -n '/pattern/=' filename,-n 選項只列印行號,不列印檔案內容。
    [dywang@dywmac zzz]$ sed -n '/[gf]ood/=' re.txt 
    1
    2
    9
    
  2. sed 配合正規表示法刪除一整行 sed -n '/pattern/d' filename,刪除 ssh 遠端連線紀錄檔中 IP 為 192.168.122.0/24 的紀錄,sed 沒有加 -i 選項不會真的刪除檔案中的內容,只是螢幕輸出中刪除。
    [dywang@dywmac ~]$ sed '/192\.168\.122\.[0-9]\{1,3\}/d' .ssh/known_hosts \
     | grep 192.168.122 --color
    
  3. 關鍵符號 + - * / 的取代,使用雙引號時,減號要使用兩個反斜線跳脫。
    [dywang@deyu moodle]$ echo '+-*/+-*/' | sed "s/\([+\\-*/]\)/\1A/g"
    sed: -e expression #1, char 19: Invalid range end
    [dywang@deyu moodle]$ echo '+-*/+-*/' | sed "s/\([+*/\\-]\)/\1A/g"
    +A-A*A/A+A-A*A/A
    
  4. 關鍵符號 + - * / 的取代,使用單引號時,減號就可以使用一個反斜線跳脫。
    [dywang@dywIssd zzz]$ echo '+-*/+-*/' | sed 's/\([+*/\\-]\)/\1A/g'
    +A-A*A/A+A-A*A/A
    [dywang@dywIssd zzz]$ echo '+-*/+-*/' | sed 's/\([+*/\-]\)/\1A/g'
    +A-A*A/A+A-A*A/A
    



2017-06-14