我有一个文件“test.xml” 看起来如下:
CLASS="BAKERS"
GROUP="ABCYYYYY"
TRACK="DASD"
OWNERS="ALPHA"
GROUP="ABCXXXXX"
GROUP="ABCZZZZZ"
我想使用单个SED行命令查找GROUP="ABC
的所有匹配项
然后在“”中我想为所有找到的匹配添加后缀:_DONE
。
所以结果应该是这样的:
CLASS="BAKERS"
GROUP="ABCYYYYY_DONE"
TRACK="DASD"
OWNERS="ALPHA"
GROUP="ABCXXXXX_DONE"
GROUP="ABCZZZZZ_DONE"
这是我正在使用的命令:
`sed -i.bkp '/^GROUP="ABC/ s/$/_DONE"/' test.xml`
但它会在“而不是在”
之后追加答案 0 :(得分:2)
几乎就是这样。但$
表示行尾,因此您必须使用"
代替最后一个"$
:
sed -i.bkp '/^GROUP="ABC/ s/"$/_DONE"/' test.xml
您还可以指定"
之后有一些空白,例如"[ \t]*$
答案 1 :(得分:1)
您可以使用此sed命令
sed '/GROUP="ABC/s/\(.*\)"/\1_DONE"/'
输出
CLASS="BAKERS"
GROUP="ABCYYYYY_DONE"
TRACK="DASD"
OWNERS="ALPHA"
GROUP="ABCXXXXX_DONE"
GROUP="ABCZZZZZ_DONE"
答案 2 :(得分:1)
这可能有所帮助:
sed -i 's/^GROUP="ABC[^"]*/&_DONE/' file
答案 3 :(得分:1)
尝试这样做但没有反引号:
sed -i.bak '/^GROUP="ABC/s/"$/_DONE"/' file
答案 4 :(得分:0)
使用此:
sed -i.bkp 's/GROUP="ABC[A-Z]*/&_DONE/g' test.xml
我用你的例子测试过并且工作过。