使用sed在分隔符之间打印文本

时间:2011-05-12 02:13:20

标签: printing sed

假设我有op(abc)asdfasdf,我需要sed在括号之间打印abc。什么对我有用? (注意:我只想要一行中第一对分隔符之间的文本,如果某一特定输入行没有一对括号,则不需要。)

2 个答案:

答案 0 :(得分:5)

$ echo 'op(abc)asdfasdf' | sed 's|[^(]*(\([^)]*\)).*|\1|'
abc

答案 1 :(得分:4)

sed -n -e '/^[^(]*(\([^)]*\)).*/s//\1/p'

该模式查找以零个或多个不是开括号的字符开头的行,然后是一个左括号;然后开始记住一个零个或多个不是紧密括号的字符列表,然后是一个紧密的括号,后跟任何东西。将输入替换为您记住的列表并打印出来。 -n表示“默认情况下不打印” - 不会打印任何没有括号的输入行。