On Friday 06 October 2006 11:47, Dominik Klein wrote:
Hallo Liste
Hallo,
ich habe eine Datei mit SQL-Statements. Ein paar updates, aber hauptsächlich "insert into" Befehle. Ich möchte wissen, wie oft in welche Tabelle geschrieben wurde. Also habe ich mir folgendes überlegt:
linux:/tmp # grep -o -E "^[^(]*" statements | uniq -c | sort -n| uniq | tail -n 10 24 insert into Tabelle1 26 insert into Tabelle2 38 insert into Tabelle2 48 insert into Tabelle1 72 insert into Tabelle1 96 insert into Tabelle1 106 insert into Tabelle2 118 insert into Tabelle2 144 insert into Tabelle2
[...]
Hat uniq einfach ein Problem mit großen Dateien/Datenmengen oder mache ich etwas falsch?
Aus der man page: "Discard all but one of successive identical lines from INPUT (or standard input), writing to OUTPUT (or standard output). " Also uniq fast nur aufeinanderfolgende Zeilen zusammen. Beispiel: Tab1 Tab1 Tab2 Tab1 Tab2 Tab2 Bei einem uniq -c werden dann die erst beiden Tab1 zusammengefasst und die letzten beiden Tab2. Also: 2 Tab1 1 Tab2 1 Tab1 2 Tab2 Das Ganze muss für Deine Zwecke vorsortiert werden. Bei einem sort | uniq -c kommt daher folgendes raus: 3 Tab1 3 Tab2 Gruß Thomas