web-dev-qa-db-ja.com

grepで非キャプチャグループを使用する方法は?

この回答 は_grep -P_が_(?:pattern)_構文をサポートしていることを示唆していますが、私には機能していないようです(グループは一致の一部としてキャプチャされ表示されます)。何か不足していますか?

このコードgrep -oP "(?:syntaxHighlighterConfig\.)[a-zA-Z]+Color" SyntaxHighlighter.jsを試していますが、結果は次のようになります。

_wikilinkColor
externalLinkColor
parameterColor
...
_

しかし、代わりに私は得る:

_syntaxHighlighterConfig.wikilinkColor
syntaxHighlighterConfig.externalLinkColor
syntaxHighlighterConfig.parameterColor
...
_
40
waldyrious

「非キャプチャ」は、グループが試合の一部ではないという意味ではありません。これは、グループの値後方参照で使用するために保存されないを意味します。あなたが探しているのは、後読みゼロ幅アサーションです:

grep -Po "(?<=syntaxHighlighterConfig\.)[a-zA-Z]+Color" file
58
Kent