지정된 문자열 앞에 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

Pass 다음을 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

관련 정보