awk를 사용하여 숫자의 합 찾기

awk를 사용하여 숫자의 합 찾기

파일에서 영숫자 단어의 숫자 합계를 계산하려면 AWK를 사용해야 합니다.

예: 내 파일에서:

rtig0143
almn3921
ptne2218

결과는

sum 8
sum 15
sum 13

답변1

당신이 이것을 고집하기 때문에 awk:

awk -F '' '{ sum = 0; for(i=1; i<=NF; i++) sum += $i; print "sum " sum }' file

답변2

POSIX적으로:

awk '{for (i = sum = 0; i++ < length;) s += substr($0, i, 1); print "sum", s}'

원리와사토 카츠라의 답장: 줄의 모든 문자를 추가합니다. 문자열을 숫자로 변환할 때 소수점 이하의 문자는 숫자 값으로 변환되고 다른 문자는 0으로 변환됩니다.

숫자가 아닌 문자를 미리 제거( gsub(/[^0-9]/, "")전처리 또는 사용 tr -cd '0-9\n')하면 성능이 향상될 수 있습니다.

답변3

파이썬3.x 접근 방식(대체 솔루션):

sum_digits.py스크립트:

import sys
with open(sys.argv[1], 'r') as f:
    for l in f:
        print("sum", sum(int(d) for d in l if d.isdigit()))

용법:

python3 sum_digits.py yourfile

산출:

sum 8
sum 15
sum 13

관련 정보