web-dev-qa-db-ja.com

grepを使用してパターンを検索する方法は?

ファイルを検索して、次のようなパターンを確認したいと思います:text1,text2,[1.2.3,3.4.5,6.7.8,etc]が存在します。角括弧内のコンマの数は未定義です。

次のコマンドを試しましたが、text1text2の後にコンマが出力されます。これは私が望むものではありません。角かっこ内のコンマのみを探しています。

$ grep -E '[*,*]' myfile.txt

編集#1

これがいくつかのサンプル入力です。括弧内のコンマは、例の数値よりも多い場合も少ない場合もあることに注意してください(つまり、未定義の数値なので、正規表現でキャプチャする必要があります)。

1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8']
2.com,3.4.5.6,txt2,txt21,['5.6.6.6']
3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']
1
user9371654

角括弧内に少なくとも1つのコンマを含む行を一致させるには、次を使用できます。

grep '\[.*,.*\]'

例.

$ grep '\[.*,.*\]' file
1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8']
3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']

角括弧は正規表現構文で特別な意味を持つため、エスケープする必要があります。 -Egrepと一緒に使用する必要がなかったことに注意してください。grepの基本的なパターンマッチング機能で十分でした。

注:grepは通常、一致を色付きで表示するため、使用するパターンと実際に一致するものがわかります。

ss1

1
steeldriver