列と行を繰り返して特定の値を計算します。

列と行を繰り返して特定の値を計算します。

約27,000の列と40,000の行を持つファイルがあります。0.0データの各列と行内のsの数を計算する必要があります。各列の数を計算して印刷するために、次のコードを作成しました0.0

awk '{a[$1]++;} END{for(i in a) print a[i]"  "i}' file_name.txt

次のコードを統合しようとしています。

awk -F, '{ for(i=NF; i>=2; --i) printf "%s ", $i; print $1 }' file_name.txt

ループを作成するには、0.0すべての数を数えて印刷します。最後の数字の出力ファイルを作成する必要はありません。

ベストアンサー1

なぜできないのですか(devWeekの提案に対するマイナーな修正、未テスト):

awk '
        {ROWCNT = 0
         for (i=1; i<=NF; i++) if ($i == "0.0")  {COLCNT[i]++
                                                  ROWCNT++
                                                 }
         print "Row", NR,":", ROWCNT
        } 
END     {for (i=1; i in COLCNT; i++) print "Col", i,":", COLCNT[i]
        }
' file

配列要素を検索する順序が定義されていないため、入力行の順序は維持されます。

おすすめ記事