需要这方面的帮助,我正在尝试替换包含通配符的行
原始文件:
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl $ARG1$ $ARG2$
需要替换为
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
答案 0 :(得分:1)
这样的事情可以做到:
sed 's/\([$A-Z0-9]*\) \([$A-Z0-9]*\)$/-w \1 -c \2/' file
它获取最后两个单词块(可能的字符:A-Z0-9$
)并以-w BLOCK1 -c BLOCK2
格式打印出来。
输出如下:
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
答案 1 :(得分:0)
希望我理解正确,请检查以下awk
和sed
单行:
kent$ cat f
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl $ARG1$ $ARG2$
kent$ awk '{$2="-w "$2;$3="-c "$3}7' f
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$
kent$ sed -r 's/ \S+ / -w&-c /' f
command[check_cpu]=/usr/local/nagios/libexec/check_aix_cpu.pl -w $ARG1$ -c $ARG2$