Datei nach Inhalt beschneiden

Herakles

Profifragensteller
Moin!

Ich habe eine 300MB große Datei mit ASCII-Text. In dieser befindet sich ab einem bestimmten Punkt nur noch dasselbe wiederkehrend. Vor diesem Datenpunkt ist der Inhalt aber veränderlich. Nun ist für mich gerade der Teil interessant, an dem sich die unterschiedlichkeit zur Gleichheit ändert.

Nun suche ich eine clevere Idee, wie ich vielleicht mit ein paar Bash-Befehlen in der Datei nach dem letzten String einer Sorte suche und alles VOR diesem String wegschneide, um nur den Teil DAHINTER herauszufiltern.

Hintergrund: ich hatte in einem Programm einen Bug, um den zu finden, habe ich printf's eingefügt und dann bei Ausführung des Programms in eine Datei gepiped. Irgendwann läuft das Programm in eine Endlosschleife und ich will nun prüfen, bei welchem Zustand das passiert ist :-)

Ideen? Die ganze Datei mit nem Editor zu öffnen wird wohl meinen Rechner in die Knie zwingen, da möchte ich umgehen...

Danke, Herakles
 
Deine Formulierung ist zwar ziemlich unscharf und konfus, aber ich glaube, du solltest dir uniq(1) mal genauer ansehen und dann mit grep und ein paar Pipes etwas basteln.

Und ... bash-Befehle ... huah ... das ist hier nicht linuxforen.de, sondern bsdforen.de :)
 
Vorrausgesetzt in der letzten Zeile steht dieser String, der sich immer wiederholt und auch vorher nicht so vorkommt (böser Hack):

# grep -v "`tail -n 1 <file>`" <file>

Optional kannst du ja, falls das noch sehr viel ist die Ausgabe in eine Datei umleiten und dann mit tail das Ende angucken. Oder auf Endorphines Vorschlag aufbauend:

# uniq <file> <outputfile>
# tail <outputfile>

Das entfernt aber auch alles was doppelt, oder mehr vorkommt, aber auch insbesondere den Schluss. ;)
 
also, du hast sowas?
Code:
1
2
3
1
2
3
4
5
6
7
7
7
7
7
7
7
7
7
?

dann sollte ein
Code:
% cat bla.txt | uniq | wc -l
das richtige fuer dich sein. das sagt dir genau die zeile in der die 7 redundant auftritt.

ist aber kein bash-befehl. weil der auch auf tcsh funzt ;)
 
Kann sein, dass ich das falsch gelesen habe, aber willst du vielleicht:

sed -n '/AB_HIER_GEHTS_LOS/,$p'
bzw
sed '1,/BIS_HIERHER/d'

?
 
Morgen

Wenn du da ohne einschränkungen rausfiltern willst, lohnt sich vieleicht ein Programm das du in Qt programmierst. Dabei lässt sich mit QRegExp leicht muster rausfiltern und den Datei Stream könntest damit auch kontrollieren.

Gruss
bsdagent
 
Zurück
Oben