关于打印:使用sed在定界符之间打印文本

Print text between delimiters using sed

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


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


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

该模式查找以零个或多个字符列表开头的行,这些字符不是开括号,然后是开括号。然后开始记住一个列表,该列表包含零个或多个非圆括号的字符,然后是一个圆括号,然后是其他内容。用您记住的列表替换输入并打印。 -n表示\\'默认情况下不打印\\'-不带括号的任何输入行都不会打印。