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}'

原則と佐藤桂の返信:行のすべての文字を追加します。文字列を数値に変換すると、小数点以下の文字は数値に変換され、他の文字はゼロに変換されます。

数字以外の文字を事前に削除(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

関連情報