bash で列内の一意の値の数を取得する 質問する

bash で列内の一意の値の数を取得する 質問する

複数の列を持つタブ区切りのファイルがあります。フォルダー内のすべてのファイルについて、列内の異なる値の出現頻度をカウントし、カウントの降順 (最も高いカウントが最初) で並べ替えたいと考えています。Linux のコマンド ライン環境でこれを実現するにはどうすればよいでしょうか。

awk、perl、python などの一般的なコマンドライン言語を使用できます。

ベストアンサー1

列 2 の頻度カウントを表示するには (例):

awk -F '\t' '{print $2}' * | sort | uniq -c | sort -nr

ファイルA.txt

z    z    a
a    b    c
w    d    e

ファイルB.txt

t    r    e
z    d    a
a    g    c

ファイルC.txt

z    r    a
v    d    c
a    m    c

結果:

  3 d
  2 r
  1 z
  1 m
  1 g
  1 b

おすすめ記事