假设我有op(abc)asdfasdf
,我需要sed
在括号之间打印abc
。什么对我有用? (注意:我只想要一行中第一对分隔符之间的文本,如果某一特定输入行没有一对括号,则不需要。)
答案 0 :(得分:5)
$ echo 'op(abc)asdfasdf' | sed 's|[^(]*(\([^)]*\)).*|\1|'
abc
答案 1 :(得分:4)
sed -n -e '/^[^(]*(\([^)]*\)).*/s//\1/p'
该模式查找以零个或多个不是开括号的字符开头的行,然后是一个左括号;然后开始记住一个零个或多个不是紧密括号的字符列表,然后是一个紧密的括号,后跟任何东西。将输入替换为您记住的列表并打印出来。 -n
表示“默认情况下不打印” - 不会打印任何没有括号的输入行。