[grep] grep을 사용하여 줄 번호 만보고

잘못된 형식을 포함 할 수있는 파일이 있습니다 (이 경우 패턴 발생 \\backslash). 나는 grep이것이 발생하는 줄 번호 만 반환하는 데 사용 하고 싶습니다 (일치가 여기에 있었기 때문에 줄 # x로 이동하여 수정하십시오).

그러나 grep -n일치 또는 줄 자체가 아니라 줄 번호 ( ) 를 인쇄하는 방법이없는 것 같습니다 .

다른 정규식을 사용하여 줄 번호를 추출 할 수 있지만 grep이 스스로 할 수 없도록하고 싶습니다. grep -no가장 가깝다고 생각하지만 여전히 일치하는 것을 표시합니다.



답변

시험:

grep -n "text to find" file.ext | cut -f1 -d:


답변

AWK를 사용할 수있는 경우 :

awk '/textstring/ {print FNR}' textfile

이 경우 FNR은 라인 번호입니다. AWK는 grep | cut을 볼 때나 grep 출력을 가져 와서 조작 할 때 유용합니다.


답변

이 모든 답변에는 grep이 전체 일치하는 줄을 생성 한 다음 다른 프로그램으로 파이프해야합니다. 줄이 매우 긴 경우 sed를 사용하여 줄 번호를 출력하는 것이 더 효율적일 수 있습니다.

sed -n '/pattern/=' filename


답변

Bash 버전

    lineno=$(grep -n "pattern" filename)
    lineno=${lineno%%:*}


답변

나는에 대한 답변을 권장 sed하고 awk그냥 줄 번호를 얻기보다는 사용하기위한 grep전체 일치하는 라인을 얻기 위해 다음과 출력에서 그것을 제거 cut하거나 다른 도구입니다. 완전성을 위해 Perl을 사용할 수도 있습니다.

perl -nE '/pattern/ && say $.' filename

또는 Ruby :

ruby -ne 'puts $. if /pattern/' filename


답변

첫 번째가 아닌 콜론 뒤에 두 번째 필드를 원할 것입니다.

grep -n "text to find" file.txt | cut -f2 -d:


답변

패턴과 일치하는 줄 수를 계산하려면 :

grep -n "Pattern" in_file.ext | wc -l

일치하는 패턴을 추출하려면

sed -n '/pattern/p' file.est

패턴이 일치 된 줄 번호를 표시하려면

grep -n "pattern" file.ext | cut -f1 -d: