ファイルを検索して、次のようなパターンを確認したいと思います:text1,text2,[1.2.3,3.4.5,6.7.8,etc]
が存在します。角括弧内のコンマの数は未定義です。
次のコマンドを試しましたが、text1
とtext2
の後にコンマが出力されます。これは私が望むものではありません。角かっこ内のコンマのみを探しています。
$ grep -E '[*,*]' myfile.txt
これがいくつかのサンプル入力です。括弧内のコンマは、例の数値よりも多い場合も少ない場合もあることに注意してください(つまり、未定義の数値なので、正規表現でキャプチャする必要があります)。
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つのコンマを含む行を一致させるには、次を使用できます。
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']
角括弧は正規表現構文で特別な意味を持つため、エスケープする必要があります。 -E
をgrep
と一緒に使用する必要がなかったことに注意してください。grep
の基本的なパターンマッチング機能で十分でした。
注:grep
は通常、一致を色付きで表示するため、使用するパターンと実際に一致するものがわかります。