質問: 行の出現回数をソートしてカウントする 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
回答: awkに連想配列を使用し、次に-optionally- sortを使用できます。$ awk ' { tot[$0]++ } end { for (i in tot) print tot[i],i } ' access.log | sort 出力:1 c.php 1 d.php 2 b.php 3 a.php