2014-09-28 120 views
1

我在mac OS上使用sed命令,下面是文本。BSD sed:d命令末尾的多餘字符

$ cat pets.txt 
This is my cat 
    my cat's name is betty 
This is your dog 
    your dog's name is frank 
This is your fish 
    your fish's name is george 
This is my goat 
    my goat's name is adam 

當我運行:(BSD SED)

$ sed '3,6 {/This/d}' pets.txt 

它顯示錯誤:

sed: 1: "3,6 {/This/d}": extra characters at the end of d command 

有什麼錯呢?當我使用gsed(GNU sed)時,它運行良好。

回答

4

最簡單的方案是把一個分號之後的d(示出的空間是可選):

sed -e '3,6 { /This/d; }' pets.txt 

BSD sed比GNU sed更加關注佈局。有一些GNU擴展不屬於BSD sed,這是一個。分號並不是問題的通用解決方案,儘管它確實解決了很多問題。您也可以將這些命令分散到多行,或將它們放在多個選項或其他各種「技巧」中。