ファイルの1列にいくつかの異なる単語があるかどうかを計算する方法

ファイルの1列にいくつかの異なる単語があるかどうかを計算する方法

CSVファイルがあります。

"AGNOLI Valerio","ITA","AST"

この例では、2 番目の列に「ITA」と表示されます。私はこの文書に約100の異なる国籍がリストされていると思います。正確にどのように多様な国籍があるか知りたいです。

答え1

cut -d ',' -f 2 filename | sort -u | wc -l

デフォルトでは、コマンドで,区切り文字として指定し、フラグを使用してcut2番目の列の値を抽出します。-fこれでフラグを使用してソートsortし、-uフラグはコマンドリストに固有の値のみを作成します。最後に、wc -l2番目の列に固有の国数を取得するコマンドがあります。

テスト

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

関連情報