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