CSVファイルがあります。
"AGNOLI Valerio","ITA","AST"
この例では、2 番目の列に「ITA」と表示されます。私はこの文書に約100の異なる国籍がリストされていると思います。正確にどのように多様な国籍があるか知りたいです。
答え1
cut -d ',' -f 2 filename | sort -u | wc -l
デフォルトでは、コマンドで,
区切り文字として指定し、フラグを使用してcut
2番目の列の値を抽出します。-f
これでフラグを使用してソートsort
し、-u
フラグはコマンドリストに固有の値のみを作成します。最後に、wc -l
2番目の列に固有の国数を取得するコマンドがあります。
テスト
cat filename
jill,us,123
jack,us,345
jill,en,234
mark,en,432
kate,us,354
kane,ru,435
今コマンドを実行した後に私が得た出力は次のようになります。
cut -d ',' -f 2 filename | sort -u | wc -l
3
答え2
これにより、awk
他のバイナリを呼び出して多くのプロセスを分岐するのではなく、より効率的に計算して計算できます。
awk -F, '{a[$2]++} END{ for (i in a) print i, a[i]}' filename.csv