私はこのファイルを持っています:
10 replies
Big Horse
123sdf562
replies
1354654
Fat Cat
2 replies
White Horse
Big Cat
Little Dog
5 replies
725vgfvjgh123
Black Horse
Brown Cow
8798jgjh
返信の前に数字が続く単語と数字で囲まれた文字を含む行を抽出したいと思います。したがって、私が望む結果は次のようになります。
10 replies
Big Horse
123sdf562
2 replies
White Horse
5 replies
725vgfvjgh123
Black Horse
このコードはgrep '[0-9] replies\|[0-9][a-z]\|Horse' file
次を返します。
Big Horse
123sdf562
2 replies
White Horse
5 replies
725vgfvjgh123
Black Horse
8798jgjh
ただし、数字で囲まれていない8798jgjh
ため、出力には表示しないでください。jgjh
grep '[0-9] replies\|[0-9][a-z][0-9]\|Horse' file
動作しません。それでは、正しい出力をどのように取得できますか?
ベストアンサー1
これを使用できますgrep
。複数の場所で数量子(BREで)を使用するという考えは、使用された\{1,\}
グループ内の少なくとも1つの文字を一致させることです。ポータブルバージョンは
grep '[0-9]\{1,\}[[:space:]]\{1,\}replies\|Horse\|[0-9]\{1,\}[a-z]\{1,\}[0-9]\{1,\}' file
grep
GNU grepなどのEREをサポートするバージョンでは、式にエスケープ文字を追加する必要はありません。
grep -E '[0-9]{1,}[[:space:]]+replies|Horse|[0-9]{1,}[a-z]{1,}[0-9]{1,}' file
[0-9]
文字クラスグループをなどのロケールに依存しないグループに置き換えることができます。[a-z]
[[:digit:]]
[[:lower:]]