我有一个xml文件,我需要保持标签的顺序,但有一个名为media的标签,它有连续顺序的重复行.我想删除其中一个重复的媒体标签,但希望保留所有的父标签 – (也是连续的和重复的).我想知道是否有一个awk解决方案只有在模式匹配时才能删除.例如:
<story> <article> <media>One line</media> <media>One line</media> <-- Same line as above,want to delete this <media>Another Line</media> <media>Another Line</media> <-- Another duplicate,want to delete this </article> </story> <story> <article> ........ and so on
我想保留连续的故事和文章标签,只删除媒体标签的重复项.我已经尝试了许多awk脚本,但没有任何东西似乎没有排序文件和破坏xml的顺序.任何帮助非常感谢.
解决方法
awk脚本可以帮助你
awk '!(f == $0){print} {f=$0}' input
测试
$cat input <story> <article> <media>One line</media> <media>One line</media> <media>Another Line</media> <media>Another Line</media> this </article> </story> <story> <article> $awk '!(f == $0){print} {f=$0}' input <story> <article> <media>One line</media> <media>Another Line</media> this </article> </story> <story> <article>
要么
$awk 'f!=$0&&f=$0' input
感谢Jidder