잘못된 형식을 포함 할 수있는 파일이 있습니다 (이 경우 패턴 발생 \\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: