Unix - 一意のIPアドレスを計算して最も一般的な順序で並べ替え、繰り返し数が同じ場合はIPで並べ替えます。

Unix - 一意のIPアドレスを計算して最も一般的な順序で並べ替え、繰り返し数が同じ場合はIPで並べ替えます。

私のファイルにIPアドレスのリストがあります。

  72.204.55.250
  72.204.55.250
  72.204.55.250
  72.204.55.250
  72.204.55.250
  96.41.51.202
  208.115.113.91
  178.137.94.166
  178.137.94.166
  208.115.113.91
  96.41.51.202
  141.8.143.179
  141.8.143.179

今、それらを分類してuniq -cサービスに電話すると、次のような結果が得られます。

  2  141.8.143.179
  2  178.137.94.166
  2  208.115.113.91
  5  72.204.55.250
  2  96.41.51.202

それでは、最も頻繁な順序()で並べ替えてみましょう。sort -rnしかし、問題は、繰り返し回数が同じ場合にIPアドレスに基づいて降順に並べ替えることです。 IPアドレスでのみ機能するソートコマンドが見つかりました。

sort -rn -t . -k1,1 -k2,2 -k 3,3 -k4,4

しかし、上記のように、これを最初の列(繰り返し回数)と組み合わせて、次のような予想結果を得る方法がわかりません。

  5  72.204.55.250
  2  208.115.113.91
  2  178.137.94.166
  2  141.8.143.179
  2  96.41.51.202

どうすればいいですか?助けてくれてありがとう。

ベストアンサー1

並べ替えが可能な場合安定したソート-sたとえば、GNU sort と一緒に、またはオプションを使用すると、同値がある--stable場合、ソートキーに関連付けられていないフィールドを持つ行は、そのフィールドごとにソートされませんが、同じ相対位置に保持されます。

$ sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 | uniq -c | sort -n -r -s
  5 72.204.55.250
  2 96.41.51.202
  2 141.8.143.179
  2 178.137.94.166
  2 208.115.113.91

おすすめ記事