2014-09-28 98 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,这是一个。分号并不是问题的通用解决方案,尽管它确实解决了很多问题。您也可以将这些命令分散到多行,或将它们放在多个选项或其他各种“技巧”中。