![grep 코드는 이전에 생성한 결과를 생성하지 않습니다.](https://linux55.com/image/129704/grep%20%EC%BD%94%EB%93%9C%EB%8A%94%20%EC%9D%B4%EC%A0%84%EC%97%90%20%EC%83%9D%EC%84%B1%ED%95%9C%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
grep
제가 자주 사용했던 작은 코드가 예전처럼 작동하지 않았습니다. 다음은 Animal.txt라는 7행, 3열 데이터세트가 있는 예입니다.
Animal Habitat Family
Bear forest Ursidae
Dog house Canidae
Cat house Fenidae
Wolf mountain Canidae
Eagle mountain Accipitridae
Lion sabana Fenidae
동물 3마리의 이름이 적힌 목록이 있습니다. 내가 원하는 것은 이 동물들의 이름이 포함된 행을 추출하는 것입니다. 목록 이름은 Animal3.txt입니다.
Dog
Cat
Bear
데이터세트와 목록은 모두 탭으로 구분된 파일입니다. 내가 사용하는 코드는 다음과 같습니다
grep -w -F -f ./animal3.txt ./animal.txt > ./output.txt
출력은 단 한 줄입니다. Bear
여러 포럼에서 검색했지만 비슷한 것을 찾지 못했습니다. 무슨 일이 일어나고 있는지, 내가 뭘 잘못하고 있는지 정말 모르겠습니다.
답변1
주석을 통해 animal3.txt
파일의 적어도 일부 줄 끝에 캐리지 리턴이 있음을 이해합니다. 이러한 문자는 사용되는 패턴의 일부가 되며 grep
, 결과적으로 파일의 패턴이 일치하지 않게 됩니다 animal.txt
.
파일에 캐리지 리턴이 없어야 하는 경우 다음을 사용할 수 있습니다.
tr -d '\r' <animal3.txt >animal3-new.txt
삭제하세요. 그런 다음 animal3.txt
원본 파일을 수정된 파일로 바꿀 수 있습니다 animal3-new.txt
.