grep 결과에서 긴 줄 제외


2

grep결과 에서 매우 긴 줄을 어떻게 제외 합니까?

나는 종종 많은 .js 파일 ( -r)을 통해 grep 하고 그중 일부는 컴파일되므로 보통 2 천 자 길이의 한 줄로 구성됩니다. 그 모든 혼란에서 나는 나머지 파일의 결과를보기가 어렵다는 것을 알게되었습니다.

grep1000 자 이상의 줄을 제외 하려면 무엇을 전달해야 합니까?

출력에서 색상을 잃어 버리거나 파이프 끝에서 첫 번째 grep을 다시 추가하여 색상을 다시 가져와야하므로 다른 grep을 통해 결과를 파이프하지 않아도됩니다.


2
파이프를 넣을 수는 cut있지만 여전히 색상을 잃게됩니다 grep -r "foo"|cut -c 1000.
앤드류 램버트

1
더 나은 도구로 전환 할 수 있습니다 :-) ack-grep on steroids 다음 답변을 사용하십시오 stackoverflow.com/a/2034806/17413
Nifle

답변:


3

grep무언가를 파이핑하는 것이 반드시 색상을 제거하지는 않습니다. 그 행동의 결과입니다 --color=auto(확인 alias grep하면 아마도 사용중인 것입니다). 당신은 그것을 무시하고 통과 할 수 --color=alwaysgrep심지어 파이프를 통해 색상을 유지합니다.

라인을 제외하면 cutAmazed가 언급 한대로 원하는 툴에 파이프를 연결할 수 있습니다. grep의 색상은 중요한 경우 일치하는 줄에 추가 바이트를 삽입합니다. 같은 grep호출 에서 (어쨌든 나에게) 그것을 할 수있는 확실한 방법은 없습니다 .


예,에 설정 --color=auto했습니다 .bashrc. --color=always와 함께 사용 cut하는 트릭.
Attila O.

않는 cut명령뿐만 아니라 출력 각 행에서 지정된 문자가 아니라 그 라인을 생략? (즉, chars 1-1000)
ryanjdillon

1

다음 명령은 원하는 것을 달성해야합니다. 즉, 길이가 1000자를 초과하는 일치하는 줄을 출력하지 마십시오.

grep -r --color=always $pattern . | cut -c1-1000

--color=always플래그는 해당 색상 이스케이프 시퀀스가 그렙에 의해 생성됩니다 보장합니다.

이 옵션 기본값 --color=auto은 grep 색상이 대화식 터미널로 전달되는 경우에만 출력을 만들고 다른 명령으로 파이프 될 때 색상을 사용하지 않습니다.

출처 : https://unix.stackexchange.com/a/113507/48906

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.