Ich habe eine Datei mit rund Millionen Zeilen. In den Zeilen habe ich ein Feld genannt transactionid
, das sich wiederholende Werte hat. Was ich tun muss, ist, sie deutlich zu zählen.
Unabhängig davon, wie oft ein Wert wiederholt wird, sollte er nur einmal gezählt werden.
text-processing
awk
Olgun Kaya
quelle
quelle
... No matter of how many times a value is repeated, it should be counted as 1. ...
cat <file_name> | awk -F"|" '{if ((substr($2,0,8)=='20120110')) print $28}' | sort -u | wc -l
Die If-Klausel war für eine weitere Überprüfung des Datums, wie es offensichtlich scheint :)Antworten:
Angenommen, es handelt sich bei Ihrer Datei um eine Textdatei, bei der die Felder durch Komma-Trennzeichen "," getrennt sind. Sie würden auch wissen, welches Feld
'transactionid'
in Bezug auf seine Position ist. Angenommen, Ihr'transactionid'
Feld ist das 7. Feld.Dies würde die eindeutigen / eindeutigen Vorkommen im 7. Feld zählen und das Ergebnis ausgeben.
quelle
sort
vor demuniq
Befehl.Vielleicht nicht die eleganteste Methode, aber das sollte funktionieren:
wo
$1
ist die Zahl, die dem zu analysierenden Feld entspricht.quelle
uniq
Die Datei muss nicht sortiert werden. ( Die Datei muss sortiert werden.) Indiesem awk-Skript wird davon ausgegangen, dass es sich bei dem Feld um das erste durch Leerzeichen getrennte Feld handelt.
quelle
sort
Implementierungen sind für den Umgang mit großen Dateien ausgelegt.