我必须在包含getzb="0" zztype="0"getzb="2" zztype="1"的行中将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/

10-12 05:42