我正在尝试将“ARG1 $”添加到此行的末尾:
command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $
我试过了:
sed -e 's/^command\[check_net_speed\]$/$ARG1$/g' /etc/nagios/nrpe.cfg
sed -e 's/.*speed.*/$ARG1$/g' /etc/nagios/nrpe.cfg
但是没有人能做到这一点......什么是捕捉“check_net_speed”命令模式并在行末添加“ARG1 $”的正确方法,所以该行看起来像这样:
command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $ARG1$
答案 0 :(得分:1)
像
这样的东西sed -e 's/^command\[check_net_speed\].*/&ARG1$/g' input
command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $ARG1$
答案 1 :(得分:0)
更改您的sed命令,如下所示,
sed -e '/^command\[check_net_speed\]/s~$~ARG1$~' file
/^command\[check_net_speed\]/
匹配以command[check_net_speed]
开头的行,并在这些匹配行上进行替换。
$
表示该行的结尾。因此,上面的命令用ARG1$
示例:强>
$ echo 'command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $' | sed -e '/^command\[check_net_speed\]/s~$~ARG1$~'
command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $ARG1$
答案 2 :(得分:0)
$
具有特殊含义:行尾。要将它视为文字,你必须逃脱它:
sed '/^command\[check_net_speed\].*\$/s/$/ARG1$/' file
这将用字符串$
替换行尾(仅由ARG1$
表示)。因此,最后,ARG1$
将附加到该行。
/command/
部分仅用于在包含字符串command
的行中执行此替换。
$ cat a
command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $
ddd
$ sed '/^command\[check_net_speed\].*\$/s/$/ARG1$/' a
command[check_net_speed]=/usr/lib64/nagios/plugins/check_net_speed.sh $ARG1$
ddd
答案 3 :(得分:0)
作为nu11p01n73R答案的补充。使用
sed -e 's/^command\[check_net_speed\].*\$$/&ARG1$/g;q' /etc/nagios/nrpe.cfg
替换命令后 ;q
表示在第一次匹配后停止处理该文件的其余部分。