【发布时间】:2021-05-31 12:30:21
【问题描述】:
我在一个 XML 文件中有以下几行
<User id="10338" directoryId="1" sometext txt text test/>
<User id="10359" directoryId="100" some more text text text/>
<User id="103599" directoryId="100" some more text text text/>
<User id="10438" directoryId="1" sometext txt text test/>
我正在尝试删除以 User id=" 开头的所有行,但我想保留那些具有 directoryId="1" 的行
我当前的 sed 命令是
sed -i '' '/<User id="/d' file.xml
我查看了A regular expression to exclude a word/string 和其他一些堆栈溢出帖子,但无法使其正常工作。请有人帮我写正则表达式。我基本上需要删除所有以
【问题讨论】:
-
试试
sed -i '' -e '/directoryId="1"/b' -e '/<User id="/d' file.xml -
Don't Parse XML/HTML With Regex. 我建议使用 XML/HTML 解析器 (xmlstarlet, xmllint ...)。