我在Mac OS上使用sed命令,以下为文本。
$ 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)
时,效果很好。
最佳答案
最简单的解决方案是在d
后面放置一个分号(显示的空格是可选的):
sed -e '3,6 { /This/d; }' pets.txt
与GNU
sed
相比,BSD sed
对布局的要求更高。有许多不属于BSD sed
的GNU扩展,这就是其中之一。分号不是解决问题的通用方法,尽管它确实解决了许多问题。您还可以将命令分布在多行上,或者将它们放在多个-e
选项或其他各种“技巧”中。
关于sed - BSD sed : extra characters at the end of d command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081375/