messages
여러 줄을 출력하는 프로그램이 있는데 그 중 일부에는 숫자 앞에 단어가 포함되어 있다고 가정해 보겠습니다 . 어떻게 이 숫자만 추출할 수 있나요? (합계만 출력하려면 어떻게 해야 하나요?)
답변1
를 사용하고 awk
숫자와 사이에 선택적 공백이 있는 십진 정수라고 가정합니다 messages
.
cmd | awk '
match($0, /[[:digit:]]+[[:space:]]*messages/) {
sum += substr($0, RSTART)
}
END {print 0+sum}'
그리고 perl
:
cmd | perl -lne '$s += $1 if /(\d+)\s*messages/; END{print 0+$s}'
답변2
사용 grep
:
grep -Po "[0-9]+(?= messages)"
설명하다:
-P
: Perl 정규 표현식(PCRE)을 사용합니다.-o
: 일치하는 줄이 아닌 일치하는 항목만 출력합니다.[0-9]+
숫자를 일치시킵니다.(?= messages)
다음 경우에만 일치합니다."정보"다음과 같이 (=긍정적 인 전망).