grep 코드는 이전에 생성한 결과를 생성하지 않습니다.

grep 코드는 이전에 생성한 결과를 생성하지 않습니다.

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.

관련 정보