データファイルがあり、そのいくつかは次のとおりです。
4 1
5 2
1 2
3 1
1 1
1 2
1 1
1 1
2 1
2 1
同様の行の数を計算し、次のように3番目の列に数を入力したいと思います。
4 1 1
5 2 1
1 2 2
3 1 1
1 1 3
2 1 2
どんな提案がありますか?
ベストアンサー1
これは一つの方法です。ファイルを並べ替えてから get count を使用してから、uniq -c
フィールドawk
順序反転を使用します。
$ sort file.txt | uniq -c | awk '{ print $2,$3,$1 }'
1 1 3
1 2 2
2 1 2
3 1 1
4 1 1
5 2 1
$
2番目の方法はpureを使用することですawk
。
$ awk '{ x[$0]++ } END { for(a in x) { print a,x[a] } }' file.txt
1 1 3
1 2 2
4 1 1
2 1 2
5 2 1
3 1 1
$
3番目の方法であるperl
.は少し昔ながら/冗長なので、誰かがよりエレガントな方法を見せるのを待ってください。
$ perl -nle '$a{$_}++;END{for(keys %a) { print $_," ",$a{$_} } }' <file.txt
3 1 1
1 2 2
5 2 1
1 1 3
2 1 2
4 1 1
$