行を含む文書があり、順序に関係なく、各行に少なくとも[a | b | c]が表示されることを確認する必要があります。
たとえば、
入力する:
abc
bca
cab
hhfdhdhfabjfdjdjff
acjfdjdfjdf
fhfhfhfabcjdfjdjfk
ahfhfbkjfjdjffc
目的の出力(4行目はおよびa
のみを含み、含まb
ないので存在しませんc
):
abc
bca
cab
fhfhfhfabcjdfjdjfk
ahfhfbkjfjdjffc
私たちはLinuxを使用しています。
答え1
パイプで接続してください:
grep a file | grep b | grep c
答え2
利点は、次の例でsed
簡単grep
に確認できます。
sed -n '/a/{/b/{/c/p;};}' file
または:
sed '/a/!d;/b/!d;/c/!d' file
答え3
awk '/a/ && /b/ && /c/' file
またはgrepを使用してください(ただし、拡張はうまくいきません)。
grep -e 'a.*b.*c' -e 'a.*c.*b' -e 'b.*a.*c' -e 'b.*c.*a' -e 'c.*a.*b' -e 'c.*b.*a' file
答え4
それをgrep
受け入れる-P
(パール正規表現)範囲。
$ grep -P '^(?=.*a)(?=.*b)(?=.*c)' file
abc
bca
cab
fhfhfhfabcjdfjdjfk
ahfhfbkjfjdjffc
説明する:
^
行の先頭に一致します。(?=.*a)
一致させる文字列に文字を含める必要がある場合にのみa
(?=.*b)
必ず含める必要がありますb
(?=.*c)
必ず含める必要がありますc