grep 출력에서 ​​매우 긴 텍스트 행을 가진 파일 제외 때문에 일치하는 것이 있으면

나는 종종 grep 명령을 실행하여 코드에서 물건을 찾지 만 웹 프로젝트의 문제는 종종 한 줄의 큰 텍스트를 만드는 압축 된 JavaScript 및 CSS 파일이 있기 때문에 일치하는 것이 있으면 전체 터미널 창이 1000 줄 이상을 채워서 내가 찾고있는 것을 찾는 것이 매우 비현실적입니다.

200 자 이상의 텍스트 한 줄로 된 파일을 피하는 방법이 있습니까?



답변

GNU grep 및 xargs 사용시 :

grep -rLZE '.{200}' . | xargs -r0 grep pattern

또는 grep의 출력을 줄일 수 있습니다.

grep -r pattern . | cut -c1-"$COLUMNS"

또는 터미널이 텍스트를 지원하는 경우 텍스트를 줄 바꿈하지 않도록 지시하십시오.

tput rmam
grep -r pattern .

또는 사용 less -S

grep -r pattern . | less -S


답변

옵션 1 :
특정 패턴과 일치하는 파일을 제외 할 수 있습니다.

grep --exclude='*.min.*'

이것은 제외 script.min.js하고 style.min.css… 다른 grep옵션은 포함 --exclude-from=FILE하고--exclude-dir=DIR

옵션 2 :
이것이 실제적인지 확실하지 않지만 cut각 줄의 처음 200자를 사용할 수 grep있습니다.

grep -H [OPTIONS] PATTERN [FILE...] | cut -c1-200 | grep PATTERN

첫 번째 grep는 초기 일치를 수행하고 파일 이름과 행을 출력하고 두 번째 는 행 PATTERNcutting 한 후에도 여전히 존재 하는지 확인합니다 .


답변

이런 종류의 상황에서 패턴을 이웃 컨텍스트 (30 문자)로 grep하는 것이 좋습니다.

grep -Po '.{0,30}pattern.{0,30}' *.js


답변