特定の列にいくつの固有値があるかを見つけるために並べ替え

特定の列にいくつの固有値があるかを見つけるために並べ替え

たとえば、list.txt です。

Joe 3
Jack 1
Ulysses 6
Fox 2
Cassidy 1
Jones 6
Kevin 7

5これにより、2番目の列に5つの異なる値があるため、出力を表示する必要があります。

justを使用してこれを行うにはどうすればよいですかsort cut wc uniq

sort -k2nまず、2番目の列を昇順に並べ替えるというアイデアがありますuniq

Cassidy 1
Fox 2
Joe 3
Jones 6
Kevin 7

次に、cut -d ' ' -f2すべての数値を一覧表示し、返される1 2 3 6 7 一意wc -dの値の数を計算するために使用します5

uniq同じ番号の重複行を削除するには、セクションで何をすべきですか?

これを達成する簡単な方法はありますか?

ベストアンサー1

cut列2の固有性にのみ興味があるので、次から始めましょう。

cut -d' ' list.txt

結果:

1
2
1
3
6
7
6

一意の値が必要な場合は、uniqがこれを行いますが、ソートされている場合にのみ可能です。ソートするには、-uフラグを使用してソートします。

cut -d' ' -f2 list.txt | sort -u

結果:

1
2
3
6
7

wcこれで、次を使用して出力行数を計算できます。

cut -d' ' -f2 list.txt | sort -u  | wc -l

これは以下を提供します。

5

私たちはlist.txtファイルの特定の形式を使用します。人の名前にスペースはありません!

おすすめ記事