ファイル内の英数字の単語の数の合計を計算するには、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}'
原則と佐藤桂の返信:行のすべての文字を追加します。文字列を数値に変換すると、小数点以下の文字は数値に変換され、他の文字はゼロに変換されます。
数字以外の文字を事前に削除(gsub(/[^0-9]/, "")
前処理または使用tr -cd '0-9\n'
)すると、パフォーマンスが向上する可能性があります。
答え3
Python3.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