在MacOSX上使用bash使用sed查找文本并删除行

在MacOSX上使用bash使用sed查找文本并删除行,sed,Sed,我发现,当我运行这个bash脚本删除两行与模式匹配的代码时,我得到了-sed:1:“/etc/nsmb.conf”:n命令末尾的额外字符-运行时出错 以下是代码问题行: sed -i s/[default]/d /etc/nsmb.conf sed -i s/signing_required=no/d /etc/nsmb.conf 非常基本,但不确定语法。查找答案似乎MacOSX可能需要额外的字符,但不知道它们可能是什么。仅尝试删除文件中的这两行: [default] signing_requ

我发现,当我运行这个bash脚本删除两行与模式匹配的代码时,我得到了-sed:1:“/etc/nsmb.conf”:n命令末尾的额外字符-运行时出错 以下是代码问题行:

sed -i s/[default]/d /etc/nsmb.conf
sed -i s/signing_required=no/d /etc/nsmb.conf
非常基本,但不确定语法。查找答案似乎MacOSX可能需要额外的字符,但不知道它们可能是什么。仅尝试删除文件中的这两行:

[default]
signing_required=no
感谢您的帮助

请尝试
sed/\[默认\]/d;/signing\u required=no/d“文件名”

似乎您的sed进入了文件名,仍然需要命令(请参阅Benjamins注释以获取解释)

另外,
[默认值]
匹配至少有一个字符的任何行。
在使用“-i”之前尝试查看结果。
然后返回到文件上使用“-i.bak”,正如Benjamin所评论的,这将提供Mac OS上似乎必须的扩展名。(我对Mac OS不了解,所以这方面要归功于@Benjamin。)

试试
sed/\[default\]/d;/signing\u required=no/d“文件名”

似乎您的sed进入了文件名,仍然需要命令(请参阅Benjamins注释以获取解释)

另外,
[默认值]
匹配至少有一个字符的任何行。
在使用“-i”之前尝试查看结果。

然后返回到文件上使用“-i.bak”,正如Benjamin所评论的,这将提供Mac OS上似乎必须的扩展名。(我对Mac OS不了解,所以这方面要归功于@Benjamin。)

MacOS sed
-I
需要文件扩展名,所以sed认为
s/[default]/d
是您的扩展名。请参见MacOS sed
-i
需要文件扩展名,因此sed认为
s/[default]/d
是您的扩展名。看见