첫 번째 파일 끝에 빈 줄이 있으면 한 텍스트 파일에서 다른 텍스트 파일로의 grep 줄이 실패합니다.

첫 번째 파일 끝에 빈 줄이 있으면 한 텍스트 파일에서 다른 텍스트 파일로의 grep 줄이 실패합니다.

탭으로 구분된 두 개의 열이 포함된 텍스트 파일이 있습니다. 다른 파일의 모든 줄(예: 두 개의 탭으로 구분된 값이 포함된 문자열)을 grep하고 싶습니다. 첫 번째 파일 끝에 빈 줄이 있습니다. 빈 줄을 제거하면 아래 명령이 제대로 작동합니다. 하지만 내가 그렇게 하지 않는다면, 그렇지 않을 것입니다.

해당 줄을 삭제할 수 있지만 왜 실패하는지 알고 싶습니다. 또한 해당 줄을 삭제하지 않고 문제를 해결하려는 시도는 실패했습니다. 도와주세요? 감사해요.

빈 줄을 제거하면 이 명령이 제대로 작동합니다.

grep -wF -f file1 file2 > file3

다음을 시도하여 줄을 제거하지 않고 문제를 해결하려고했습니다.

grep '.' file1 | grep -wF - file2 > file3

하지만 제대로 작동하지 못했습니다.

답변1

빈 패턴 매칭어느라인을 입력하십시오. 따라서 패턴 목록에 file1하나가 포함되어 있으면 모든 라인이 file2일치합니다. 당신은 말하지 않았지만 그것이 당신이 겪고 있는 문제이기를 바랍니다. 적어도 빈 줄이 일으킬 다른 문제는 생각할 수 없습니다.

-fgrep 파이프라인은 괜찮아 보이지만 후자의 grep 옵션이 필요하다는 점만 다릅니다 .

grep '.' file1 | grep -wF -f - file2 > file3
                          ^^

또는 프로세스 대체를 사용할 수 있습니다.

grep -wF -f <(grep '.' file1) file2 > file3

<( cmd )Ksh/Bash/Zsh가 수행하는 작업은 다음과 같습니다. 읽을 때 출력을 생성하는 파일 이름 으로 대체됩니다 .cmd

관련 정보