다음 데이터가 포함된 파일이 있습니다.
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