私は3000万から4000万のデータ項目の間にある多くのデータを持っています。私たちはこれらのファイルを処理して他のインターフェースチームに送信する必要があります。
以下は私たちが受け取ったファイル形式です。
c1 c2 c3 c4 c5 c6
A B C D 5 s
A B C D 4 s
A B E F 5 s
A B E F 8 S
C D E F 9 S
出力ファイルのすべての列を印刷する必要があります。これはGPRSの使用に関連しているため、グループ化する必要があります。c1-c4その後、すべてが一致した場合は要約する必要があります。c5をクリックしてファイルの内容をすべて印刷します。
以下はサンプル出力ファイルです。
c1 c2 c3 c4 c5 c6
A B C D 9 s
A B E F 13 s
C D E F 9 s
また、このワークフローはUnixスクリプトよりもPerlではるかに速く実行されると聞きました。
ベストアンサー1
perl
@terdonの答えと似ていますが、より良い形式の出力を提供する別の解決策は次のとおりです。
$ perl -alne '
(print && next) if $. == 1;
$h{"@F[0..3]"}{s} += $F[4];
$h{"@F[0..3]"}{t} = $F[5];
END {
for (keys %h) {
printf "%-4s%-4s%-4s%-4s%-4s%-4s",split(" ",$_),$h{$_}{s},$h{$_}{t};
printf "\n";
}
}' file
c1 c2 c3 c4 c5 c6
A B E F 13 S
A B C D 9 s
C D E F 9 S