grep을 사용하여 다른 파일 내에서 한 .txt 파일의 모든 인스턴스를 찾으려면 어떻게 해야 합니까?

grep을 사용하여 다른 파일 내에서 한 .txt 파일의 모든 인스턴스를 찾으려면 어떻게 해야 합니까?

grep을 사용하여 한 .txt 문서의 줄이 다른 문서에 나타나는지 비교하는 방법은 무엇입니까?

또한, 반대의 경우를 찾기 위해 grep을 어떻게 사용합니까? 그럴 수 있을까 grep -v?

답변1

grep -F -f inner_file outer_file

설명서의 매개변수 설명GNU grep:

-F, --fixed-strings

패턴을 개행 문자로 구분된 고정된 문자열 목록으로 해석하며, 어느 문자열이든 일치합니다. ( -FPOSIX에서 지정)

-f file, --file=file

한 줄에 하나씩 파일에서 패턴을 가져옵니다. 빈 파일에는 패턴이 0개 포함되어 있으므로 일치하는 항목이 없습니다. ( -fPOSIX에서 지정)

다음 옵션을 사용할 수도 있습니다 -x.

-x, --line-regexp

전체 행과 정확히 일치하는 일치 항목만 선택합니다. ( -xPOSIX에서 지정)

-v반대 결과를 알아보는 옵션을 추가합니다 .

-v, --invert-match

일치하지 않는 행을 선택하려면 일치의 의미를 반대로 합니다. ( -vPOSIX에서 지정)

빠른 테스트를 위해 Bash 셸을 사용하세요.

# grep -F -f <(printf 'A\nZ\n') <(printf 'A\nB\nC\n')
A
# echo $?
0
# grep -F -f <(printf 'A\nZ\n') <(printf 'B\nC\n')
# echo $?
1
# grep -v -F -f <(printf 'A\nZ\n') <(printf 'B\nC\n')
B
C
# echo $?
0
# grep -x -F -f <(printf 'A\nZ\n') <(printf 'AA\nBB\nCC\n')
# echo $?
1

답변2

귀하와 비슷한 것을 테스트한 결과 다음과 같은 결론에 도달했습니다.

cat sampleOne.txt | cat sampleTwo.txt | grep <pattern>

예를 들어 텍스트 파일에 다음과 같은 내용을 썼습니다.

This is a test.
1111
2222

내가 구체적으로 "이것은 테스트입니다"를 찾을 때 나는 다음을 사용했습니다.

cat *.txt | grep "This is a test."

This is a test.
This is a test.

또는

cat sampleOne.txt && cat sampleTwo.txt | grep "This is a test."

결과:

This is a test.
11111
22222
This is a test.

심지어

cat sampleOne.txt | cat sampleTwo.txt | grep "This is a test"

이것은 나에게 다음을 제공합니다:

This is a test.

물론 이 명령은 grep -v pattern찾고 있는 패턴의 반대 패턴을 찾습니다. 예를 들어

cat *.txt | grep -v "This is a test."

나에게 줄 것입니다 :

11111
22222
11111
22222

관련 정보