![](https://seccdn.libravatar.org/avatar/ca6c95b496f58c0980e0286a10e3db3f.jpg?s=120&d=mm&r=g)
Hallo Liste 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 Leider ist das nicht das was ich mir erhofft hatte. Warum werden hier Tabelle1 und Tabelle2 mehrfach aufgeführt, wo uniq -c doch eigentlich gleiche Zeilen zählen sollte? Wenn ich das ganze von Hand nachbaue, sehen die Ergebnisse darüberhinaus völlig anders (und scheinbar korrekt, wenn ich mir das File von Hand anschaue) aus: linux:/tmp # grep -w "insert into Tabelle2" statements | wc -l 28800 linux:/tmp # grep -w "insert into Tabelle1" statements | wc -l 4992 linux:/tmp # grep -v -w "insert into Tabelle1" statements |grep -v -w "insert into Tabelle2" | wc -l 1387 linux:/tmp # wc -l statements 35179 statements linux:/tmp # echo $((1387+28800+4992)) 35179 An "Leerzeichenmist", der uniq durcheinanderbringen könnte, kann es eigentlich auch nicht mehr liegen, weil das Folgende die gleichen Zeilen liefert: linux:/tmp # sed 's/ */ /g' statements | grep -o -E "^[^(]*" | uniq -c | sort -n| uniq | tail -n 10 > datei while read line do echo "\"$line\"" done < datei linux:/tmp # while read line
do echo "\"$line\"" done < datei "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"
Wie man sieht hängt nach "Tabelle1" bzw "Tabelle2" kein Leerzeichen mehr, das sich evtl. hätte einmischen können. Hat uniq einfach ein Problem mit großen Dateien/Datenmengen oder mache ich etwas falsch? Danke und Gruß Dominik