SED:使用正则表达式替换参数

时间:2017-10-27 17:56:28

标签: sed

我必须替换配置文件中的一行。

这样:

execution.commands=ARGUMENT,COMMAND,RULE

进入这个:

execution.commands=!ARGUMENT,!COMMAND,!RULE

是否可以使用sed和regex?

谢谢!

2 个答案:

答案 0 :(得分:1)

你需要这个。

awk '/execution.commands/ && gsub(/[=,]/,"&!",$0)' file

sed

sed -E '/execution.commands/s/([=,])/\1!/g' file

那是

答案 1 :(得分:0)

如果您的实际输入与显示的示例Input_file相同,那么以下内容可能对您有帮助。

sed 's/\(.*=\)\([^,]*\)\(,\)\([^,]*\)\(,\)\(.*\)/\1!\2\3!\4\5!\6/'  Input_file

编辑: 正如=之后的OP字所提到的那样不是静态的,然后尝试在同一个上提供以下解决方案。

案例1:

cat Input_file
execution.commands=ARGUMENT,COMMAND,RULE
awk -F"=" '{num=split($2,array,",");for(i=1;i<=num;i++){val=val?val "," "!"array[i]:"!"array[i]};print $1,val;val=""}' OFS="="  Input_file
execution.commands=!ARGUMENT,!COMMAND,!RULE

<强> 情况2:

cat Input_file
execution.commands=ARGUMENT,COMMAND
awk -F"=" '{num=split($2,array,",");for(i=1;i<=num;i++){val=val?val "," "!"array[i]:"!"array[i]};print $1,val;val=""}' OFS="=" Input_file
execution.commands=!ARGUMENT,!COMMAND