sed -E 用于组

sed -E 用于组

$echo '| foo | bar | baz |' | sed 's@^|[^|]*|\([^|]*\)|.*@\1@'

bar按要求返回。我该如何对 opt 做同样的事情-E

https://www.gnu.org/software/sed/manual/html_node/Extended-regexps.html

答案1

尝试:

$ echo '| foo | bar | baz |' | sed -E 's@^\|[^|]*\|([^|]*)\|.*@\1@'
 bar

笔记:

  1. 在扩展正则表达式中,组是用(...)而不是 组成的\(...\)

  2. 在扩展正则表达式中,|通常意味着交替。要将其解释为字符,需要对其进行转义。 (此规则的例外是在[...]其中|只是一个常规字符。

替代方案:使用 awk

$ echo '| foo | bar | baz |' | awk -F\| '{print $3}'
 bar 

相关内容