단어 앞의 숫자를 추출합니다.

단어 앞의 숫자를 추출합니다.

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)다음 경우에만 일치합니다."정보"다음과 같이 (=긍정적 인 전망).

관련 정보