私の列をファイルにまとめるスクリプトを作成したいと思います。彼はパラメータとして与えられた列の数が欲しいです。いくつかあるかもしれません。この問題を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
生成された要素の数を返すので、後で配列を繰り返すためにこの値を保存する必要があります。