ファイルの各日付の行数を並べ替えるには?

ファイルの各日付の行数を並べ替えるには?

次のファイルがあります。

$ more messages
Jan  2 random text
Jan  2 random text
Jan  3 random text
Jan  2 random text
Jan  3 random text
Jan  3 random text
Jan  3 random text

私はこれを使ってこれをしたいと思いますsort

Jan  2 : 3
Jan  3 : 4

ベストアンサー1

以下を使用してcut興味のあるキャラクターを分割できます。sortuniq -c

$ < input cut -c1-6 |sort |uniq -c
  3 Jan  2
  4 Jan  3

または、awk出力形式に関する特別な要件がある場合は、次のようにします。

$ awk '{a[substr($0, 1, 6)] += 1} END { for (x in a) printf "%s : %d\n", x, a[x] }' < x | sort
Jan  2 : 3
Jan  3 : 4

最初のブロックは連想配列を使用して各日付の発生回数を計算し、最後のENDブロックは日付とその数を印刷します。sortそれ以降の出力は、キーが配列から出る順序を保証できないためです。

おすすめ記事