지정된 문자열 앞에 0이 아닌 값을 갖는 파일의 줄 번호를 추출합니다.

지정된 문자열 앞에 0이 아닌 값을 갖는 파일의 줄 번호를 추출합니다.

다음 데이터가 포함된 파일이 있습니다.

1. verification: 10 passed 0 failed
2. verification: 10 passed 0 failed
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed
5. verification: 10 passed 0 failed

3번과 4번의 줄번호를 알고 싶습니다.

답변1

파일이 호출된다고 가정하면 in.txt다음이 수행됩니다.

awk '$5>0 {print $0; }' in.txt

당신에게 줄 것입니다 :-

3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed

나는 줄 번호(1-5)가 파일의 일부라고 가정했습니다. 그렇지 않은 경우 $5를 으로 변경하세요 $4.

줄 번호가 파일의 일부이고 점 없이 인쇄하려는 경우:-

awk '$5>0 {sub(/\./,"",$1); print $1 }' in.txt

이는 다음을 제공합니다:-

3
4

답변2

를 사용하면 GNU grep다음을 사용할 수 있습니다 lookbehind.

$ grep -P '(?<!0) failed' file 
3. verification: 10 passed 1 failed
4. verification: 10 passed 3 failed

또는 다음의 짧은 버전 awk:

$ awk '$5 > 0' file

답변3

나는 실수를 인쇄하지 않고 점까지 줄의 첫 번째 숫자를 인쇄한다는 점에 유의하십시오.

와 함께sed:

 cat inputfile.txt | sed  '/ 0 failed$/d ; s/\..*//'

와 함께grep과 sed:

 cat inputfile.txt | grep -v ' 0 failed$' | sed 's/\..*//'

산출:

3
4

관련 정보