我必须替换配置文件中的一行。
这样:
execution.commands=ARGUMENT,COMMAND,RULE
进入这个:
execution.commands=!ARGUMENT,!COMMAND,!RULE
是否可以使用sed和regex?
谢谢!
答案 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