테스트 보고서에서 실패 횟수 추출

테스트 보고서에서 실패 횟수 추출

다음 출력을 어떻게 구문 분석합니까?lein test

$ lein test
lein test nepleaks-engine.core-test

Ran 1 tests containing 1 assertions.
0 failures, 0 errors.

내가 원하는 것은 failuresbash 스크립트를 사용하기 전에 번호를 얻는 것입니다.

나는 단지 더 나은 것이 무엇인지 알고 있습니다 grep.

$ lein test | grep 'failures' | cut -d' ' -f1
0 

더 나은 방법을 제안해 주세요.

답변1

솔루션은 각 줄에서 첫 번째 공백 문자까지 "실패"를 포함하는 부분을 반환합니다.

좀 더 구체적으로 알고 싶다면 다음과 같이 할 수 있습니다.

sed -n '$s/^\([[:digit:]]\{1,\}\) failures.*/\1/p'

즉, 마지막 줄( $)만 고려되며, 특정 패턴을 따르는 경우에만 고려됩니다. 그 뒤에 비어 있지 않은 10진수 시퀀스  failures(그리고 해당 숫자 시퀀스가 ​​반환됨)가 옵니다.

답변2

failures이것이 출력의 한 줄에서만 발생하는 한 이 작업을 수행하는 방식에는 아무런 문제가 없습니다. 또 다른 옵션은 실패 횟수가 항상 출력의 네 번째 줄에 있다는 사실을 기반으로 할 수 있습니다. 그것은 간단합니다 awk:

lein test | awk 'NR==4 { print $1 }'

failures,또는 두 번째 필드가 다음과 같은 줄에 고정됩니다.

lein test | awk '$2=="failures," { print $1 }'

또는 마지막 줄에 고정하십시오.

lein test | awk 'END { print $1 }'

또는 sed마지막 줄에 앵커를 사용하세요.

lein test | sed -n '$ s/^\([0-9]*\).*/\1/p'

답변3

awk 사용(첫 번째 열을 나타내는 $1 인쇄):

lein test | grep 'failures' | awk '{print $1}'

답변4

awk를 통해,

lein test | awk '/ failures,/{print $1}'

GNU를 사용하면 sed,

lein test | sed -n '/ failures,/s/^\([^ ]\+\).*/\1/p'

또는 휴대용:

lein test | sed -n '/ failures,/s/^\([^ ]\{1,\}\).*/\1/p'

관련 정보