sed - BSD sed : extra characters at the end of d command

标签 sed bsd

我在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/

相关文章:

c - typedef int function(void*) 是什么意思?

error-handling - BSD校正可能吗?

linux - 像传递文件一样传递 sed 输出

r - 用于更新 R Markdown 代码以使用 `$latex` 分隔符的命令行程序

regex - sed 替换所有字符直到第一个空格

bash - 如何使用 BSD/OS X sed 在匹配后删除/删除 X 行

linux - 操作系统调度算法

Linux sed - 在开始和结束时删除而不删除中间语法

linux - 通过搜索另一个文件从文件中删除匹配段落

c - 扫描同一个文件时找不到 execve 文件!