저는 오늘 아침 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