파일에서 영숫자 단어의 숫자 합계를 계산하려면 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