IT story

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

hot-time 2020. 9. 2. 20:54
반응형

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%%:*}

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

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:

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

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

또는 Ruby :

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

grep 만 사용 :

grep -n "text to find" file.ext | grep -Po '^[^:]+'

참고 URL : https://stackoverflow.com/questions/6958841/use-grep-to-report-back-only-line-numbers

반응형