行の合計とカウント – Awk

Sum column and count lines – StackOverflow

事前にソートすればループを無くせるのでリーズナブル.

%%bash
time {
echo """36  2605 1 2
36  2605 1 2
36  2603 1 2
36  2605 1 2
36  2605 1 2
36  2605 1 2
36  2606 1 2""" | sort -k 2,2n |
awk '
p&&p!=$2{print p,a,b,c,cnt;a=b=c=cnt=0}
{a+=$1;b+=$3;c+=$4;cnt++;p=$2}
END{print p,a,b,c,cnt}
'
}
2603 36 1 2 1
2605 180 5 10 5
2606 36 1 2 1

real    0m0.005s
user    0m0.005s
sys 0m0.003s
広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください