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

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

다음 출력을 어떻게 구문 분석합니까?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'

즉, 마지막 줄( $)만 고려하고 특정 패턴을 따르는 경우에만 고려합니다. 즉, 비어 있지 않은 십진수 시퀀스와 그 뒤에  failures해당 숫자 시퀀스를 반환합니다.

답변2

failures출력의 한 줄에서만 발생 한다면 수행하는 방식에는 아무런 문제가 없습니다 . 또 다른 옵션은 실패 횟수가 항상 출력의 4번째 줄에 있다는 사실을 기반으로 하는 것입니다. 다음을 사용하면 매우 쉽습니다 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'

관련 정보