缩短具有前缀的多个模式

问题描述 投票:0回答:1

我使用以下 sed 命令删除除包含模式的匹配之外的所有行:

sed '/orders="Green\|orders="Orange\|orders="Blue/!d'

这可行,但如何使其更短,以便

orders="
只使用一次?

sed '/orders="["Green","Orange","Blue"]/!d'

这样的东西匹配括号之间的所有字符, 但忽略了整个词。

bash shell sed
1个回答
0
投票

sed
行选择使用正则表达式,默认情况下,如果没有
-E
/
-r
选项,则使用基本风味

您要使用的是群组 -

\(regexp\)

所以像这样:

sed '/orders="\(Green\|Orange\|Blue\)/!d'
© www.soinside.com 2019 - 2024. All rights reserved.