我使用以下 sed 命令删除除包含模式的匹配之外的所有行:
sed '/orders="Green\|orders="Orange\|orders="Blue/!d'
这可行,但是如何使其更短,以便
orders="
只使用一次?
sed '/orders="["Green","Orange","Blue"]/!d'
这样的东西匹配括号之间的所有字符, 但忽略了整个单词。
这可行,但是如何使其更短,以便 order=" 只使用一次?
在组内进行轮换。 您的想法是正确的,但正则表达式语法错误。 这就是你想要的:
sed '/orders=("Green"\|"Orange"\|"Blue")/!d'
但是,由于该模式表明您可能正在尝试匹配 XML,因此我觉得有义务建议您应该使用一个bona fide XML 解析器,也许是一个合并到 XSLT 处理器中的解析器,如果您确实这样做的话.