2016-05-02 6 views
1

Ich habe eine CSV-Datei mit dem Namen test.csv. Es sieht so aus:Wie erhalte ich die Gesamtzahl eindeutiger Werte in einer Spalte in einer CSV?

1,Color 
1,Width 
2,Color 
2,Height 

Ich möchte herausfinden, wie viele verschiedene Werte in der ersten Spalte sind. Das Shell-Skript sollte in diesem Fall 2 zurückgeben.

Ich versuchte zu laufen , die ich auf einer anderen Frage sah, aber es ausgedruckt viel mehr Informationen, als ich brauche.

Wie schreibe ich ein Shell-Skript, das die Anzahl der verschiedenen Werte in der ersten Spalte von test.csv ausgibt?

Antwort

2

Mit awk Sie tun können:

awk -F, '!seen[$1]++{c++} END{print c}' file 

2 

Dieser awk Befehl verwendet Schlüssel $1 und speichert sie in einem Array gesehen. Der Wert wird auf 1 erhöht, wenn ein Schlüssel zum ersten Mal ausgefüllt wird. Jedes Mal, wenn wir einen eindeutigen Schlüssel erhalten, erhöhen wir den Zählerstand c und drucken ihn am Ende aus.

1

Oder

cut -d, -f1 file | sort -u | wc -l 

Verwenden cut die erste Spalte zu extrahieren, dann sort die einzigartigen Werte zu erhalten, wc dann, sie zu zählen.

1
#List the first column of the CSV, then sort and filter uniq then take count. 

awk -F, '{print $1}' test.csv |sort -u |wc -l 
Verwandte Themen