ファイル形式は次のとおりです。
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