为什么我在sed命令中出错?

时间:2018-08-07 05:57:20

标签: shell sed

$ ls | sed -n "/c/{/s/r/ssss/;p}"

在终端中运行此行时,我得到了:

  

sed:-e表达式#1,字符0:不匹配的`{'

怎么了?

1 个答案:

答案 0 :(得分:2)

我认为其中的/个字符太多。

您可能需要:

ls | sed -n "/c/{ s/r/ssss/;p;}"

这会从ls中查找包含c的行,并将第一个r替换为ssss并打印结果。

它可以与sed的Mac(BSD)版本和GNU版本一起使用。在p之后没有分号的情况下,GNU版本可以,但Mac版本则不能。

但是,可能会有其他方式来解释您要尝试执行的操作,这可能会导致使用不同的命令行。如果您要查找包含cs的行,并用ssss(可能还有其他一些字符替换整个行,则不清楚您的目标),那么您必须在sed的GNU和Mac / BSD版本中做更多的工作。