【发布时间】:2012-01-25 12:02:11
【问题描述】:
给定一个包含以下内容的文件:
<root>
<a></a>
<b></b>
</root>
命令应该输出:
<root>
<a></a>
<b></b>
我使用sed 的GNU Win32 端口尝试过的事情:
删除最后两行。
这很快,但它假定</root> 是倒数第二行,否则会导致错误。
sed -e '$d' test.xml | sed -e '$d'
用空字符串替换所有出现的</root>。
这可行,但比第一个解决方案慢,并且如果有嵌套的 <root> 元素会中断(不太可能)。
sed -e 's|</root>||' test.xml
我正在处理的文件可能很大,因此效率很重要。
有没有办法将 sed 替换限制在文件中的最后一次出现?还是有其他更快的实用程序?
【问题讨论】:
标签: windows bash text command-line sed