grep에서 줄 번호를 얻는 방법?


18

다음 그렙

grep -r -e -n coll *

표시됩니다

fullpath/filename:  <tag-name>coll</tag-name>

다음 텍스트가있는 행을 알고 싶습니다.를 추가하려고 시도했지만 -n작동하지 않았습니다. 추가를 시도했지만 | grep -n *이상한 일이 발생했습니다.

내가보고 싶은 것은 (포맷에 관심이 없음)

fullpath/filename:10:  <tag-name>coll</tag-name>

1
-n옵션을 사용할 때 줄 번호가 표시됩니다 . 당신은 당신이 얻는 결과를 게시 할 수 있습니까?
크리스 하퍼

답변:


18

-e옵션 목록의 끝에 놓아야 합니다.grep -rne coll *


15

어떤 -r 및 -e에 필요한!

패턴의 줄 번호를 얻으십시오!

grep -n "pattern" file.txt

당신은 출력이 또 다른 grep 명령을 추가 할 경우에만 줄 번호를 얻으려면!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'

1
단지 줄 번호를 얻으려면, 그것은 사용하기 쉽게 cut, 예를 들면cut -f1 -d:
wjandrea

1

특정 파일에서 패턴을 grep하고 일치하는 줄을 얻으려면 다음을 수행하십시오.

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

또는 cut@ wjandrea에서 제안한대로 사용 :

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

어디

  • <Pattern>인용 된 glob 패턴입니다 ( -Eregexp에 대한 옵션 사용 ).
  • <File> 관심있는 파일입니다.
  • 첫 번째 파이프 awk ...는 grep 출력의 라인 번호를 필터링합니다 ( :각 라인 이전 ).
  • 두 번째 파이프는 줄 번호가 한 번만 표시되도록합니다.

줄 번호를 얻으려면 cutAwk보다 사용하기가 더 쉽습니다 ( 예 :cut -f1 -d:
wjandrea)

@wjandrea 어떤 방법으로 쉬워?
Sheljohn

나는 구문이 더 단순하다는 것을 의미한다
wjandrea

@wjandrea 매우 객관적인 것 같습니다.
Sheljohn

@wjandrea 풍자에 대해 죄송합니다, 귀하의 제안을 포함하도록 편집 :)
Sheljohn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.