Windows에서 편집된 파일에서 grep -f가 실패함

Windows에서 편집된 파일에서 grep -f가 실패함

저는 오늘 아침 grep -f를 사용하여 텍스트 파일에서 일치하는 패턴을 얻는 문제를 공유하고 싶었습니다.

징후

$ echo 'sandbox/test/script.py' | grep -G '^sandbox/'
sandbox/test/script.py

-f 옵션 사용이 실패합니다.

$ echo 'sandbox/test/script.py' | grep -G -f patterns.txt
$ cat patterns.txt
^sandbox/

텍스트 파일을 확인할 때까지 grep이 실패한 이유를 이해하지 못했습니다.

$ file patterns.txt
/home/miguel/patterns.txt: ASCII text, with CRLF line terminators

이 파일은 다양한 운영 체제의 여러 동료가 사용하며 누군가 Windows 줄 종결자를 사용하여 저장했습니다.

답변1

해결책

dos2unix를 사용하면 이 문제가 해결되었습니다.

$ dos2unix patterns.txt
dos2unix: converting file /home/miguel/patterns.txt to Unix format ...
$ file patterns.txt
/home/miguel/patterns.txt: ASCII text

이제 grep -f가 다시 작동합니다.

$ echo 'sandbox/test/script.py' | grep -G -f patterns.txt
sandbox/test/script.py

관련 정보