2012-05-13 7 views
2

ack와 일치하는 라인의 길이를 제한하는 방법이 있습니까? ack가 축소 된 javascript 파일과 일치하면 인쇄되는 줄이 매우 커질 수 있습니다. 여전히 강조 표시된 일치 항목을 표시하고 싶지만 이상적으로는 일치 항목 전후에 줄을 바꿔야합니다 ("... stuff match stuff ..."). the ack docs에서 결정적인 결과가 보이지 않습니다. Bash - ack - 일치하는 라인의 길이 제한

나는

ack pattern | awk '{print substr($0,1,200) }' 

처럼 뭔가 그것으로 파고 시도했지만 바람직하지 착색 및 서식을 제거 할 awk 보인다. 또한 나는 (초 동안 나와 함께 곰) 시도 : 나는 각 라인에-ACK를 다시하고 위로 또는 뭔가 잘라 수 있다면

ack pattern | ack pattern 

보고를하지만 동일한 서식 문제가 있습니다. 파이프 퍽 출력은 줄 바꿈을 제거합니다. 의견에 따라

편집 :

어쩌면 그것이 내가이 원하는 주된 이유를 설명하는 데 도움이 될 것입니다. 내 프로젝트에서 ack.vim을 사용하여 검색합니다. 나는 종종 "쿠키"와 같은 단어를 찾기 위해 자바 스크립트 파일을 확인하고 싶다. 우리는 jQuery와 다른 코드 라이브러리에 버전이있는 다른 라이브러리를 가지고 있기 때문에 ack 결과에 나타납니다. 이러한 파일은 축소되어 있기 때문에 줄 바꿈이 거의없고 분할 창에서 과거 스크롤해야하는 거대한 행이 표시됩니다. 너무 많은 공간을 차지하는 것은 성가시다. 무시할 수 있도록 확장 된 파일 이름을 내 ackrc에 추가 할 수는 있지만 축소 된 라이브러리를 추가 할 때마다 새 파일 이름을 추가하지 않아도됩니다. 이것에 관한 ack.vim 레포에는 an open issue이 있습니다. 순전히 bash-fu를 통해 할 수 있는지 알고 싶습니다.

+1

일치하는 패턴과 자바 스크립트 파일의 관련 부분을 알고 있으면 도움이 될 것입니다 ... 고정 경로를 취하는 대신 패턴 일치를 수행하는 것이 더 많은 행운을 겪게 될 것으로 생각됩니다. 너비 부분 문자열. –

+0

편집을 추가했습니다 –

답변

3

할 수 있습니다 :

  • 사용 -o 옵션 당신이 정말로 원하는 것은 다음, 축소 된 자바 스크립트 파일을 무시하여 ACK를 업그레이드하는 경우 Only print filenames containing matches
+1

흠, 어느 쪽도 도움이되지 않습니다. 여전히 일치하는 문맥을보고 싶습니다. –

+5

패턴을'-o '. {0,24} 패턴으로 수정하십시오. {0,24} 24 '는 원하는 컨텍스트의 길이이고 * pattern *은 원래 패턴입니다. 이것을 스크립트에 삽입 할 수 있습니다. – tripleee

+0

아, 알겠습니다. 내가 원하는 것에 가깝게. –

2

에 옵션 -l 사용

  • Show only the part of a line matching PATTERN합니다. ack 1.96 이상에서는 축소 된 JavaScript 파일을 무시합니다. 이 파이프 될 때

  • 1

    ACK 교묘 색상을하지 않습니다,하지만 당신은 --color에 있음을 재정의 할 수

    ack --color foo | cut -c1-80 | sed "s/$/\e[0;30m/" 
    

    (마지막 파이프의 경우 텍스트의 색상을 다시 설정하는 선택의 중간에서 절단)

    서식을 지정할 때 유사한 옵션이 있습니다 (--heading, --break).