2016-05-07 4 views

答えて

4

あなたはこのようにそれを使用することができます:

echo 'some text (some text in paranthesis) [some other in brackets]' | grep -o '[][()]' 

(
) 
[ 
] 

あなたは文字クラス内()をエスケープする必要はありません。また、[の直後に][を置くと、エスケープする必要はありません。

+1

Anubhava:5年半の間に1日あたり9.6の回答。私はあまりにもAOLで仕事をしたい! – sweaver2112

+0

Lol sure on board – anubhava

+0

'[] [()]'は、文字クラスではなく、ブラケット式です。 '[:space:]'は文字クラスなので、大括弧の式に '[[:space:]]'として含めることができます。 –

0

最も一般的な方法は、文字の前に\を置くことですが、奇妙なことにgrepを使ってはうまくいかないようです。

あなたはPerlを使用することができた場合は、このです:

% cat yourfile.txt | perl -ne 'print if(/[\[\]\(\)]/);'; 
1

だけFYI:grep documentation, section 3.2 Character Classes and Bracket ExpressionsにAccoding

ほとんどのメタ文字は、ブラケット表現の内部で、その特別な意味を失います。

‘]’
最初のリスト項目でない場合は、ブラケット式を終了します。したがって、 ']'文字をリスト項目にしたい場合は、最初に配置する必要があります。

また、あなたは([)はブラケット式の中で特別ではないことがわかります。あなたの'[\[\]\(\)]'ブラケット表現で]以来

パターンが最初の文字ではない、それはパターンを終了し、次の]が不完全なブラケット式を作成しました。

+1

詳細な説明をありがとう –

関連する問題