下記のawkスクリプトで実現できます。
mktime関数を使うためgawkコマンドを使います。スクリプトの1行目のパスを環境に合わせて変更してください。
sample.awk
#!/opt/homebrew/bin/gawk -f
function str2datetime(str)
{
split(str, array, /[:\/]/)
start_str = array[1] " " array[2] " " array[3] " " array[4] " " array[5] " " array[6]
#print start_str
return mktime(start_str)
}
BEGIN {
FS = ","
}
{
#print $1 "|" $2 "|" $3 "|" $4
start_datetime = str2datetime($3)
end_datetime = str2datetime($4)
duration = end_datetime - start_datetime
#print start_datetime, end_datetime, duration
if ( duration > 0 ) {
if ( test[$1] < duration ) test[$1] = duration
}
}
END {
for ( key in test ) {
print key "," test[key]
}
}
使い方
-
sample.awk
に実行権限を付与する - スクリプトの引数にcsvファイルを指定する
$ chmod +x ./sample.awk
$ ./sample.awk a.csv
test1,1
test2,90000
test3,60
Like!