尝试执行"sed"命令但得到"command not found"错误

k18*_*189 1 bash shell scripting sed

我正在尝试执行以下命令:

`sed 's/49%100%/49%!100%/' /etc/nagios/objects/services.cfg`
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

-bash: ###############################################################################: command not found
Run Code Online (Sandbox Code Playgroud)

如果我尝试在没有后退滴答的情况下运行它,该命令将起作用.

我尝试过以下方法:

`sed 's/49%100%/49%!100%/' /etc/nagios/objects/services.cfg` 2>&1

`sed 's/49%100%/49%!100%/' /etc/nagios/objects/services.cfg`> /dev/null
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

cod*_*ter 6

您不需要返回标记或$()sed此处调用,因为您的要求不是将输出解释sed为命令.

如果您打算修改/etc/nagios/objects/services.cfg,可以这样做:

sed 's/49%100%/49%!100%/' /etc/nagios/objects/services.cfg > /etc/nagios/objects/services.cfg.new
Run Code Online (Sandbox Code Playgroud)

或者,进行就地编辑(当你绝对确定你的sed表达是正确的时):

sed -i 's/49%100%/49%!100%/' /etc/nagios/objects/services.cfg
Run Code Online (Sandbox Code Playgroud)

在像macOS这样的BSD系统上,sed -i需要一个参数.命令是:

sed -i '' 's/49%100%/49%!100%/' /etc/nagios/objects/services.cfg
Run Code Online (Sandbox Code Playgroud)

有关背面刻度及其更现代形式的更多信息,请参阅这些帖子$():

  • `-i''`,有空间; `-i''`在与它传递给的命令有关的范围内解析与`-i`完全相同. (3认同)