줄이 포함된 문서가 있고 순서에 관계없이 각 줄에 [a|b|c]가 적어도 한 번 나타나는지 찾아야 합니다.
예를 들어:
입력하다:
abc
bca
cab
hhfdhdhfabjfdjdjff
acjfdjdfjdf
fhfhfhfabcjdfjdjfk
ahfhfbkjfjdjffc
원하는 출력(네 번째 줄은 a
및 만 포함하고 포함 b
하지 않으므로 존재하지 않습니다 c
):
abc
bca
cab
fhfhfhfabcjdfjdjfk
ahfhfbkjfjdjffc
우리는 리눅스를 사용하고 있습니다.
답변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