15,000行のデータファイルがありますが、固有値は400だけです。一意の値の数を特定したら、ファイル内でその値が発生した回数を特定する方法を探しています。次の方法を考えましたが、非常に遅いです。どんなアイデアがありますか?
for value in `cat mylist.txt | uniq`
do
counter=`grep $value mylist.txt |wc -l`
echo $value $counter
done
ベストアンサー1
ただsortとuniqを使用してください:
sort mylist.txt | uniq | wc -l
これにより、一意の値の数が提供されます。各固有値の発生回数を取得するには、uniq
-c オプションを使用します。
sort mylist.txt | uniq -c
uniq
マニュアルページから:
-c, --count
prefix lines by the number of occurrences
また、後で参照できるようにgrep
-c オプションが役に立つことがよくあります。
-c, --count
Suppress normal output; instead print a count of
matching lines for each input file. With the -v,
--invert-match option (see below), count non-matching
lines. (-c is specified by POSIX.)