grep 명령의 일치하는 표현식을 반환하는 방법

grep 명령의 일치하는 표현식을 반환하는 방법

파일 시스템에서 검색하는 데 자주 사용하는 명령을 디버깅하려고 합니다. 일치시키려는 정규식 목록이 포함된 외부 파일이 있습니다.

예 [수백 개의 용어가 포함된 실제 문서]cat terms.txt

cat\|dog\|mouse\|frog\|horse

이제 내 조건 중 하나가 나에게 두통을 주고 모든 행에 대해 true를 반환한다고 생각하는 문제에 직면했습니다. 어떤 용어가 자주 공격을 받는지 알아내서 좀 더 정확하게 용도를 변경할 수 있었으면 좋겠습니다. 저는 이 유틸리티 와 함께 사용 합니다 strings.

find /data/*/** -type f -print0 | xargs -0 strings -f -t d | grep -w "$(terms.txt)"

반환 형식은 다음과 같습니다

/data/animals/felines.txt: 6 tiger cat

terms.txt 파일의 일치하는 표현식을 줄 끝에 추가하는 것과 같은 것을 보고 싶습니다. 일종의 bash 스크립트를 작성하지 않고도 이것이 가능합니까?

/data/animals/felines.txt: 6 tiger cat - matched expression "cat"

답변1

grep이 옵션은 -o원하는 출력을 생성하지 않지만 문제를 찾는 데 도움이 됩니다. 각 줄의 일치하는 부분만 출력하고, 줄의 여러 부분이 일치하는 경우 각 부분을 개별적으로 출력합니다. 다른 라인):

/data/animals/felines.txt:cat

관련 정보