如何在文件中找到匹配项,然后为匹配项添加后缀
How to find a match in file and then suffix that match
我有一个文件"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`
但它附加在“之后,而不是在”之内”
你可以使用这个 sed 命令
sed '/GROUP="ABC/s/\(.*\)"/_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
您还可以指定 "
之后有一些空白,例如 "[ \t]*$
这可能有帮助:
sed -i 's/^GROUP="ABC[^"]*/&_DONE/' file
尝试这样做,但不要使用反引号:
sed -i.bak '/^GROUP="ABC/s/"$/_DONE"/' file
使用这个:
sed -i.bkp 's/GROUP="ABC[A-Z]*/&_DONE/g' test.xml
我用你的例子进行了测试并且成功了。
我有一个文件"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`
但它附加在“之后,而不是在”之内”
你可以使用这个 sed 命令
sed '/GROUP="ABC/s/\(.*\)"/_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
您还可以指定 "
之后有一些空白,例如 "[ \t]*$
这可能有帮助:
sed -i 's/^GROUP="ABC[^"]*/&_DONE/' file
尝试这样做,但不要使用反引号:
sed -i.bak '/^GROUP="ABC/s/"$/_DONE"/' file
使用这个:
sed -i.bkp 's/GROUP="ABC[A-Z]*/&_DONE/g' test.xml
我用你的例子进行了测试并且成功了。