2017-05-07 6 views
0

egrepは、かっこ内のサブ式の結果を出力できますか?egrepはカッコで囲まれた部分式の結果を出力できますか?

私はmacOSを使用しています。grepのマニュアルページを調べると、re_format(7)と記載されています。 man 7 re_formatを調べると、括弧で括られた部分式がサポートされていることがわかり、pmatch arrayに記録しています。

しかし、egrepをどういうわけかグループ内のカッコで囲まれた部分式だけを出力する方法は明確ではありません。

+0

いくつかの 'grep'バージョンでは正規表現の一致部分のみを出力する' -o'オプションがありますが、それはキャプチャグループを必要としません...サンプル入力行と期待される出力を追加する必要があります... grepはあなたが使うことができる唯一のコマンドですか?なぜsed/awk/perlなどを使わないのですか – Sundeep

+0

Greetings @Sundeep - grepは唯一の選択肢ではありませんが、できるかどうか不思議でした。私が実際にあなたが参照しているようなより特殊な言語を使用する必要があるように見えます。 –

+0

はい。またはいいえ。それはすべてあなたが意味することに依存します。簡潔でテスト可能なサンプル入力と期待される出力を含む[mcve]を表示して、あなたがしたいことを明確にする質問を編集してください。 –

答えて

0

いいえ、egrepは括弧で囲まれた部分式の結果を出力することができません。

0

は、youreの()(一致させるために第三引数のためのGNUのawkを使用して)やろうと何これです:

$ cat file 
aa(bb(cc(dd)(ee)ff)(gg))hh 

$ awk '{ while(match($0,/(.*)\(([^)]*)\)(.*)/,a)) { print ++c, a[2]; $0=a[1] a[3]} print "rest:", $0 }' file 
1 gg 
2 ee 
3 dd 
4 ccff 
5 bb 
rest: aahh 
+0

これはクールであり、あなたの努力に感謝しますが、私は 'egrep'で可能かどうかを知りたかっただけです。とにかくありがとう! –

+0

それは 'それが何であるかによって異なります。あなたの質問の下に私のコメントを参照してください。 –

+0

私は現時点で頑張っています(あなたの努力を続けてくれてありがとう!)が、https://www.freebsd.org/cgi/man.cgi?query=re_format&sektion=7で「括弧でくくられた部分式」を検索すると私が何を言っているのかを見ることができます。私は 'grep'がそれらのマッチを出力するだけです。 –

関連する問題