GNU/Linux >> Linux の 問題 >  >> Linux

行の発生数を並べ替えてカウントしますか?

Apacheを持っています ログファイル、access.log 、そのファイル内の行の出現回数をカウントする方法は?たとえば、cut -f 7 -d ' ' | cut -d '?' -f 1 | tr '[:upper:]' '[:lower:]'

a.php
b.php
a.php
c.php
d.php
b.php
a.php

私が望む結果は次のとおりです:

3 a.php
2 b.php
1 d.php # order doesn't matter
1 c.php 

承認された回答:

| sort | uniq -c

コメントで述べられているように。

出力をsortにパイプする 出力をアルファベット/数字の順序で整理します。

uniqであるため、これは要件です。 繰り返される行でのみ一致します。つまり

a
b
a

uniqを使用する場合 このテキストファイルでは、次のように返されます。

a
b
a

これは、2つのa sはbで区切られます –それらは連続した行ではありません。ただし、最初にデータをアルファベット順に並べ替える場合は、

a
a
b

次に、uniq 繰り返し行を削除します。 -c uniqのオプション 重複の数をカウントし、次の形式で出力を提供します:

2 a
1 b

参照:

  • sort(1)
  • uniq(1)

Linux
  1. 特定のディレクトリ内のファイルとサブディレクトリの数をカウントする方法

  2. 各50行から15行目と25行目を印刷する方法は?

  3. ファイルの行数を数えますか?

  1. ドキュメントの行数を数えるには?

  2. 見つかったファイルの総行数を数えるには?

  3. ディレクトリ内のすべての拡張子とそれぞれのファイル数を取得する

  1. Lsによって出力される行数?

  2. Grep一致後のファイルの行数をカウントする方法は?

  3. Linuxのファイルから行、単語、文字を数える