ファイルに含まれる文字列がどのくらいの頻度で表示されるのか、どうすればわかりますか?

ファイルに含まれる文字列がどのくらいの頻度で表示されるのか、どうすればわかりますか?

次の形式のURLのリストを含むファイルがあります。

編集する

http://www.google.com/absd/siidfs/kfd837382$%^$&,

www.google.com、

Googleサイト

yahoo.com/list/page/jhfjkshdjf…

次の出力を表示するスクリプトを作成したいと思います。

 google.com : 2
http://www.google.com: 1
yahoo.com : 1 

ファイルからURLを読み取ってファイル全体を再確認する必要がある部分が詰まっています。私はbashスクリプトに初めて触れて何をすべきかわかりません。

答え1

ソース入力ファイル

入力形式が次のと仮定します。

http://www.google.com,

www.google.com,

google.com

yahoo.com

結果は次のとおりです。

google.com : 3 
yahoo.com : 1 

現在行われている状況全体を正確に把握することは困難ですが、表示された出力を考慮すると、最初にすべての行が次の形式になるように入力ファイルを変換したいと思います。

google.com
google.com
google.com
yahoo.com

次に、次のコマンドセットを介してファイルを実行します。

$ grep -v "^$" data.txt | \
      sed -e 's/,$//' -e 's/.*\.\(.*\)\.\(.*\)$/\1.\2/' | \
      sort | uniq -c
      3 google.com
      1 yahoo.com

次のように、目的の形式に合わせて出力形式を整理できます。

$ grep -v "^$" data.txt | \
      sed -e 's/,$//' -e 's/.*\.\(.*\)\.\(.*\)$/\1.\2/' | \
      sort | uniq -c | \
      awk '{printf "%s : %s\n", $1, $2}'
      google.com : 3
      yahoo.com : 1

編集#1

OPには後続の質問があり、例の入力を変更しました。したがって、これらの入力を計算するには、次のようにします。

http://www.google.com/absd/siidfs/kfd837382$%^$&,

www.google.com,

google.com

yahoo.com/list/page/jhfjkshdjf...

最初の例では、変更された1行のコードを使用できます。

$ grep -v "^$" data2.txt | \
      sed -e 's/,$//' \
          -e 's#\(http://[^/]\+\).*#\1#' \
          -e '/^[^http]/ s/^www\.//' \
          -e '/^[^http]/ s#\([^/]\+\).*$#\1#' | \
          sort | uniq -c | \
          awk '{printf "%s : %s\n", $1, $2}'
2 : google.com
1 : http://www.google.com
1 : yahoo.com

答え2

正しい数を得るためにおよびを使用してから、sort最終的な書式設定にまたはを使用できます。このような:uniq -csedawk

sort file | uniq -c | awk '{printf "%s : %s\n", $1, $2}'

元の質問は同じ基本パイプラインで答えることができますが、まず入力を編集してください。

sed -e 's/http:\/\///' -e 's/^www\.//' file | sort | uniq -c |
awk '{printf "%s : %s\n", $1, $2}'

これが完全に正確でない場合は、ホスト名形式と出力形式が正確であるようにsedコマンドを変更できます。awkたとえば、長いURLの右側を消去するには、次のようにします。

sed -e 's/http:\/\///' -e 's/^www\.//' -e 's/\/..*$//' file |
sort | uniq -c |
awk '{printf "%s : %s\n", $1, $2}'

関連情報