パラメーターで指定されたファイルのAWK合計列

パラメーターで指定されたファイルのAWK合計列

私の列をファイルにまとめるスクリプトを作成したいと思います。彼はパラメータとして与えられた列の数が欲しいです。いくつかあるかもしれません。この問題をawkでどのように解決するのかわからず、いくつかの列にまとめました。

cat count.txt | awk '{ sum+=$1} END {print sum}'

たとえば、このコードは列を合計するため、列の数は一定ではありませんか?ユーザーが入力した内容によって異なりますか?

例えば。 2、5、1列、または次の6、3、2などの列を合計したいです。

ベストアンサー1

まず、必要はありませんcat。 awkはファイルの読み方を知っています。

-vオプションを使用して列をカンマ区切り文字列として渡し、awkのBEGINブロックから文字列を分割する必要があります。

awk -v cols="2,5,1" '
    BEGIN {n = split(cols, ary, /,/); sum=0}
    {for (i=1; i<=n; i++) sum += $(ary[i])}
    END {print sum}
' count.txt

split生成された要素の数を返すので、後で配列を繰り返すためにこの値を保存する必要があります。

おすすめ記事