タブで区切られ、次のような大きなフラットファイルがあります。
APP SRC HITS
App1 SRC1 202
App1 SRC1 101
App1 SRC13 90
App1 SRC2 3169
App1 SRC4 1
App1 SRC2 158
App1 SRC2 151
App3 SRC3 1
App3 SRC3 6
App3 SRC3 11
App3 SRC3 16
App3 SRC3 339
App2 SRC3 2
App2 SRC3 10023
私は非常に新しいスクリプト作成者なので、どこから始めるべきかわからず、APP列とSRC列の結果をグループ化する必要がある解決策が見つからないようです(たとえば、APP列とSRC列は1つのキーになります)。
各アプリケーションとそのアプリケーションが属するSRCのMINとMAXのクリック数を印刷したいと思います。例えば
出力は次のとおりです。スクリプトを介してファイルを渡してこれを達成する方法はありますか?
APP SRC MIN MAX
App1 SRC1 101 202
App1 SRC2 151 3169
App3 SRC3 1 339
App2 SRC3 2 10023
よろしくお願いします!
ベストアンサー1
そしてawk
:
awk '
BEGIN{ FS=OFS="\t"; print "APP", "SRC", "MIN", "MAX" }
NR==1{ next }
{ key=($1 OFS $2) }
!(key in min) { min[key]=max[key]= $3 }
min[key]>$3 { min[key]=$3 }
max[key]<$3 { max[key]=$3 }
END{ for (key in min) print key, min[key], max[key] }' infile
出力:
APP SRC MIN MAX
App2 SRC3 2 10023
App1 SRC1 101 202
App1 SRC2 151 3169
App1 SRC4 1 1
App1 SRC13 90 90
App3 SRC3 1 339