我必须在包含 的行上用
或 getzb="2"zztype="1"
替换 getzb="0"zztype="0"
qsid="90"qsid="100"
所以我写了下面的 sed
命令:
sed '/qsid="90"\|qsid="100"/s/\(getzb=\)"0" \(zztype=\)"0"'/\1"2" \2"1"/
看起来很丑,有没有大神指教一下?
最佳答案
试试这个:
sed -r '
/\bqsid="(90|100)"/{
s/\bgetzb="0"/getzb="2"/g;
s/\bzztype="0"/zztype="1"/g
}
'
样本测试
$ cat file
getzb="0" zztype="0" foobar
getzb="0" zztype="0"
getzb="0" zztype="0" qsid="90" or qsid="100"
$ sed -r '
/\bqsid="(90|100)"/{
s/\bgetzb="0"/getzb="2"/g;
s/\bzztype="0"/zztype="1"/g
}
' file
getzb="0" zztype="0" foobar
getzb="0" zztype="0"
getzb="2" zztype="1" qsid="90" or qsid="100"
关于linux - 关于 sed 模式匹配的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495175/