grep을 사용하는 동안 줄 번호를 얻으십시오


360

grep recursive를 사용하여 파일을 검색하여 문자열을 검색하고 일치하는 모든 파일과 해당 문자열을 포함하는 행이 터미널에 인쇄됩니다. 그러나 그 줄의 줄 번호도 얻을 수 있습니까 ??

예 : 현재 내가 얻는 것은 /var/www/file.php: $options = "this.target"이지만, 내가 얻으 려고 하는 것은 그 문자열을 포함하는 줄 번호가 /var/www/file.php: 1142 $options = "this.target";어디에 있는지 1142입니다.

재귀 적으로 grep하는 데 사용하는 구문은 다음과 같습니다. sudo grep -r 'pattern' '/var/www/file.php'

또 다른 질문은 패턴과 같지 않은 결과를 얻는 방법입니다. 모든 파일과 같지만 특정 문자열을 가진 파일과는 달리?


-v 플래그는 일치하지 않는 행을 표시합니다 (grep -v myText MyFile.txt)
bcarroll

답변:


546
grep -n SEARCHTERM file1 file2 ...

패턴과 같지 않은 결과를 얻는 방법에 대한 또 다른 빠른 질문이 있습니다. 모든 파일과 같지만 특정 문자열을 가진 파일과는 달리?
sai

5
이것은 명령 행 스위치 -v입니다. 'grep --help'를 실행하면 모든 옵션이 표시됩니다
Miro A.

56
-r여러 파일을 지정할 경우 필요하지 않습니다 . -r디렉토리를 지정한 경우 에만 필요 합니다.
Sparhawk

@JeanPaul--nr과 -n -r에 대해 동일한 결과가 나타납니다. 어떤 버전의 grep을 사용하고 있습니까? $ grep -n -r 이름 * | wc -l 1984 $ grep -nr 이름 * | wc -l 1984 $ grep -V grep (BSD grep) 2.5.1-FreeBSD
Miro A.

코드 만 대답하고 설명은 없습니다. : S
Florian Castelain

148

줄 번호는 다음과 grep -n같이 인쇄됩니다 .

grep -n pattern file.txt

일치하는 줄없이 줄 번호 만 얻으려면 cut다음을 사용할 수 있습니다 .

grep -n pattern file.txt | cut -d : -f 1

패턴을 포함 하지 않는 라인 은 다음과 grep -v같이 인쇄됩니다 .

grep -v pattern file.txt

3
그리고 마지막으로 일치하는 줄 번호 : grep -n pattern file.txt | cut -d : -f 1 | tail -1(이것을 변수에 저장하고 그것을 예를 들어 꼬리 파일에 사용할 수 있습니다)
Nux

그리고 각 문자열의 시작 부분에서 숫자 / 콜론을 제거하기 위해 다음과 같은 것을 사용할 수 있습니다.grep -n pattern file.txt | sed 's/^[0-9][0-9]*://'
leetbacoon

24

줄 번호 만 원하면 다음을 수행하십시오.

grep -nr Pattern file.ext | gawk '{print $1}' FS=":"

예:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023

1
awk -F: '{print $1}'또한 작동 및 당신은 필요가 없습니다 -rgrep(디렉토리 만이 재귀 적으로 검색 할 수 있습니다) 파일을 사용하는 경우
스튜어트 Cardall을


0

grep -nr "검색 문자열"디렉토리

줄 번호가있는 줄이 표시됩니다.


0

줄 번호와 함께 결과를 표시하려면 다음을 시도하십시오.

grep -nr "word to search for" /path/to/file/file 

결과는 다음과 같아야합니다.

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