以前は正常に回答された質問here @fedorguiに質問があります。awkを使用して統計量を計算します
私はテーブルを持っている:
pac1 xxx
pac1 yyy
pac1 zzz
pac2 xxx
pac2 uuu
pac3 zzz
pac3 uuu
pac4 zzz
そして、私はこのような出力を計算する必要があります。
最初の数がこの列1(列2 /独自の出現で独特の出現であるpac1 xxx 2/4
pac1 yyy 1/4
pac1 zzz 3/4
pac2 xxx 2/4
pac2 uuu 2/4
pac3 zzz 2/4
pac3 uuu 2/4
pac4 zzz 3/4
case xxxは2列目に2つあり、uniq列は1つです4 => 2/4
解決策はawkにあります:
$ awk 'FNR==NR {col1[$1]++; col2[$2]++; next} {print $0, col2[$2] "/" length(col1)}' file file
しかし、私の入力は次のように行を重複している可能性:
pac1 xxx
pac1 xxx
pac1 xxx
pac1 yyy
pac1 zzz
pac2 xxx
pac2 xxx
pac2 xxx
pac2 uuu
pac3 zzz
pac3 uuu
pac4 zzz
pac4 zzz
そして、私はだけuniqの行の同じ計算を行うなど、すべての行にこの統計を追加する必要があります(重複行を計算しません) :
pac1 xxx 2/4
pac1 xxx 2/4
pac1 xxx 2/4
pac1 yyy 1/4
pac1 zzz 3/4
pac2 xxx 2/4
pac2 xxx 2/4
pac2 xxx 2/4
pac2 uuu 2/4
pac3 zzz 2/4
pac3 uuu 2/4
pac4 zzz 3/4
pac4 zzz 3/4
これは私が何千もの行を持っているより複雑です。何かありがとうございます。
数字と計算の
Geroge
$0
を使用することができますは、例1のように同じです - 私は次のように計算を行う必要があります:uniqtry 'FNR == NR {if(!seen [$ 0] ++){col1 [$ 1] ++;あなたが行の最後から余分なスペースを取り除く必要があります... else if '{$ 1 $ 2} ++)' – Sundeep
これは私が試した問題ですが、これはファイルの一部です - 私はもっとユニークではないカラムを持っていますので、この2つのカラムに対してuniqをチェックする必要があります。 – Geroge