結果

結果

ファイル形式は次のとおりです。

aaa 1-00:12:43.122
aaa 0-21:14:43.133
bbb 3-11:14:54.433
bbb 2-00:00:10

2番目の列の数字は形式ですd-hh:mm:ss.nnn。場合によっては、最後の10進3桁は存在しません。各ユーザーの合計持続時間を得るために、最初の列にグループ化して合計する方法を見つけようとしています。したがって、この例の結果は次のようになります。

aaa 1-21:27:26.255
bbb 5-11:15:04.433

ベストアンサー1

次のawkスクリプトを使用してください。

BEGIN {
   FS=" |-|:"
}
{
   data[$1][2]+=$2
   data[$1][3]+=$3
   data[$1][4]+=$4
   data[$1][5]+=$5
}
END {
   for( record in data ) {
      if( data[record][5]>=60 ) {
         data[record][4]+=1
         data[record][5]-=60.0
      }
      if( data[record][4]>=60 ) {
         data[record][3]+=1
         data[record][4]-=60
      }
      if( data[record][3]>=24 ) {
         data[record][2]+=1
         data[record][3]-=24
      }
      printf( "%s %d-%02.0f:%02.0f:%06.3f\n", record, data[record][2], data[record][3], data[record][4], data[record][5] )
   }
}

使用法:

~/scratch/se/379631$ cat input
aaa 1-00:12:43.122
aaa 0-21:14:43.133
bbb 3-11:14:54.433
bbb 2-00:00:10
~/scratch/se/379631$ gawk -f 379631.awk input
aaa 1-21:27:26.255
bbb 5-11:15:04.433

おすすめ記事