【发布时间】:2019-06-20 02:13:43
【问题描述】:
Solaris,版本:11.10.0,REV=2005.01.21.15.53
我有一个文件test.txt,其中包含如下值:
<Info>
<AccountNumber>23456789</AccountNumber>
<BranchNumber>004</BranchNumber>
<TransitNumber>01646</TransitNumber>
<NameAndCity>XYZ Bank</NameAndCity>
<OwnerFullName>ABC XYZ</OwnerFullName>
</Info>
所有信息都在一行中,我们有多个行,如上所示,还有其他标签可用。
它还包含其他标记值。此外,如果标签值包含“333”组合,我不想替换它们。
我想使用 sed 命令将标签的值替换为 33333,替换后,我想将更新后的信息保存到同一个文件中。
输出应该是:
<Info>
<AccountNumber>33333333</AccountNumber>
<BranchNumber>33333</BranchNumber>
<TransitNumber>3333333</TransitNumber>
<NameAndCity>333 33333</NameAndCity>
<OwnerFullName>3333 33333</OwnerFullName>
</Info>
我是 shell 脚本的新手,不能完全编写模式来匹配它。
这是我迄今为止对前两个标签值实施的,但它不起作用:
sed 's/(<AccountNumber>)\+[0-2,4-9]*$/\1 33333333/' test.txt
sed 's/(<BranchNumber>)\+[0-2,4-9]*$/\1 33333/' test.txt
任何帮助将不胜感激。
【问题讨论】:
-
实际标签为:
2345678 234 -
感谢 Tiw,已更新
-
啊...我以为你只想替换两个标签,但编辑后我看到你想替换所有标签中的值?
-
Solaris,版本:11.10.0,REV=2005.01.21.15.53