如何匹配多个模式并用sed更改一部分

Fot*_*isK 8 sed

我在文件中有以下几行:

SUT_INST_PIT=true
SUT_INST_TICS=true
SUT_INST_EXAMPLES=false
SUT_INST_PING=false
Run Code Online (Sandbox Code Playgroud)

我如何创建一个 sed 行来匹配模式SUT_INST_EXAMPLES&SUT_INST_PING并设置falsetrue

我不能简单地替换为falsetrue因为我不想改变SUT_INST_PITSUT_INST_TICS即使它们是假的!!!

我目前有两个sed正在运行的命令,但我只想要一行!

sed -i "s/SUT_INST_EXAMPLES=false/SUT_INST_EXAMPLES=true/g" <file>
sed -i "s/SUT_INST_PING=false/SUT_INST_PING=true/g" <file>
Run Code Online (Sandbox Code Playgroud)

sed行的另一件事应该能够被参数化为 set false->truetrue-> false,但仅限于SUT_INST_EXAMPLES& SUT_INST_PING

解决方案(根据@RomanPerekhrest)以及如何在发送中使用它(期望脚本):

send "sed -i 's\/^\\(SUT_INST_EXAMPLES\\|SUT_INST_PING\\)=false\/\\1=true\/' file\r"
Run Code Online (Sandbox Code Playgroud)

Rom*_*est 6

sed方法:

sed -i 's/^\(SUT_INST_EXAMPLES\|SUT_INST_PING\)=false/\1=true/' file
Run Code Online (Sandbox Code Playgroud)

file 内容:

SUT_INST_PIT=true
SUT_INST_TICS=true
SUT_INST_EXAMPLES=true
SUT_INST_PING=true
Run Code Online (Sandbox Code Playgroud)

\(SUT_INST_EXAMPLES\|SUT_INST_PING\)- 交替组,匹配字符串开头的SUT_INST_EXAMPLESORSUT_INST_PING


替代gawk ( GNU awk ) 方法:

gawk -i inplace -F'=' -v OFS='=' '$1~/^SUT_INST_(EXAMPLES|PING)/{$2=($2=="false")? "true":"false"}1' file
Run Code Online (Sandbox Code Playgroud)