我有一个看起来像这样的 XML 文件:
<Header version= '1.0' timestamp='2017-01-04T07:10:07'>
<Date>2017-04-18</Date>
.
.
.`
</Header>
<Header version= '1.0' timestamp='2017-01-04T07:10:07'>
<Date>2017-04-18</Date>
.
.
.`
</Header>
<Header version= '1.0' timestamp='2017-01-04T07:10:07'>
<Date>2017-04-18</Date>
.
.
.`
</Header>
我想删除以第 2 次出现开始的“Header”(而不是/Header)行 - 不要问为什么 :-)。所以输出应该看起来像这样(是的,我知道它的格式不正确,但我也将对其进行其他处理):
<Header version= '1.0' timestamp='2017-01-04T07:10:07'>
<Date>2017-04-18</Date>
.
.
.`
</Header>
<Date>2017-04-18</Date>
.
.
.`
</Header>
<Date>2017-04-18</Date>
.
.
.`
</Header>
我试过:
sed -i '2,${/<Header/d;}' file
但这删除了所有出现的 Header。有什么建议吗?
谢谢
最佳答案
这可能对你有用(GNU sed):
sed '/^<\/Header/,${/^<Header/d}' file
从第一个结束 Header
标记到文件末尾,删除所有以 Header
标记开头的行。
关于Linux:从 XML 文件中删除具有从第 2 次出现开始的匹配字符串的行的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43774416/