awkで、特定のディレクトリにあるcsvファイルを全部読み込んで、各ファイルの2,3,4列目の各総和を出力し、最後に全てのファイルの2,3,4列目の各総和を求めるプログラム

以下のようなawkスクリプトを書くことができます。このスクリプトは、指定されたディレクトリ内のすべての.csvファイルを読み込み、2列目、3列目、および4列目の合計を出力します。最後に、すべてのファイルの2列目、3列目、および4列目の合計を計算して出力します。

#!/usr/bin/awk -f

BEGIN {
  FS = ","
  sum2 = sum3 = sum4 = total2 = total3 = total4 = 0
}

# ファイルを読み込む前にファイル名を出力する
FNR == 1 {print "File: " FILENAME}

# 2列目、3列目、および4列目の合計を計算する
{
  sum2 += $2
  sum3 += $3
  sum4 += $4
}

# 各ファイルの2列目、3列目、および4列目の合計を出力する
ENDFILE {
  print "  Column 2 sum: " sum2
  print "  Column 3 sum: " sum3
  print "  Column 4 sum: " sum4

  # 各ファイルの2列目、3列目、および4列目の合計を合計する
  total2 += sum2
  total3 += sum3
  total4 += sum4

  # 次のファイルに進む前に変数をリセットする
  sum2 = sum3 = sum4 = 0
}

# 全てのファイルの2列目、3列目、および4列目の合計を出力する
END {
  print "Total column 2 sum: " total2
  print "Total column 3 sum: " total3
  print "Total column 4 sum: " total4
}

このスクリプトをファイルに保存し、実行権限を与えます。

chmod +x script.awk

次に、以下のようにコマンドを実行します。

find /path/to/directory -name "*.csv" -exec awk -f /path/to/script.awk {} \;

このコマンドでは、指定されたディレクトリ内のすべての.csvファイルを検索し、各ファイルに対してawkスクリプトを実行します。{}は、ファイル名に置き換えられます。すべてのファイルの2列目、3列目、および4列目の合計が計算され、出力されます。