sed替换包含通配符的行

时间:2013-12-11 15:23:16

标签: sed

需要这方面的帮助,我正在尝试替换包含通配符的行

原始文件:

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$

2 个答案:

答案 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)

希望我理解正确,请检查以下awksed单行:

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$