Wie schneidet man Textdateien ab, die auf Anfangs- und Endzeilen in cygwin basieren?
Habe ich einige log-Dateien um 100MBs jeder.
Persönlich finde ich es umständlich, sich mit solchen großen Dateien. Ich weiß, dass log-Zeilen, die für mich interessant sind nur zwischen 200 bis 400 Zeilen oder so.
Was wäre ein guter Weg, um zu extrahieren maßgeblich log-Zeilen aus diesen Dateien, dh ich will einfach nur Rohr Bereich von Zeilennummern in eine andere Datei.
Beispielsweise die Eingänge sind:
filename: MyHugeLogFile.log
Starting line number: 38438
Ending line number: 39276
Gibt es einen Befehl, dass ich in cygwin zu cat
nur, dass die Reichweite in der Datei? Ich weiß, dass wenn ich irgendwie die Anzeige, dass Angebot in stdout dann kann ich auch über die Pipeline, um eine Ausgabe-Datei.
Hinweis: das Hinzufügen Linux
tag für mehr Sichtbarkeit, aber ich brauche eine Lösung, die funktionieren könnte in cygwin. (In der Regel linux-Befehle funktionieren in cygwin).
InformationsquelleAutor der Frage bits | 2011-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt wie ein job für
sed
:...senden die Zeilen 8 bis 12
yourfile
zu standard aus.Wenn Sie möchten, stellen Sie die Nummer der Zeile, die Sie verwenden möchten
cat -n
erste:InformationsquelleAutor der Antwort Johnsyweb
Können Sie
wc -l
um herauszufinden, die Gesamt # von Zeilen.Können Sie dann kombinieren
head
undtail
um den Bereich, den Sie möchten. Lassen Sie uns annehmen das Protokoll ist mit 40.000 Zeilen, die Sie wollen, dass die letzten Jahre 1562 Linien, dann von denen, die Sie möchten, dass die ersten 838. Also:Oder es gibt wahrscheinlich einen einfacheren Weg, mit
sed
oderawk
.InformationsquelleAutor der Antwort David
Sah ich diesen thread, wenn ich versuche zu split eine Datei in Dateien mit 100 000 Zeilen. Eine bessere Lösung, als die sed, ist:
Wird es geben-Dateien wie:
InformationsquelleAutor der Antwort Dorian
Wie wäre es damit:
Es nutzt
tail
Ausgabe von den 10.000 TEN Zeile und ab und dannhead
zu halten nur 10 Zeilen.Den gleichen (fast) Ergebnis mit
sed
:Dieser hat den Vorteil, dass Sie zur Eingabe der line-Sortiment direkt.
InformationsquelleAutor der Antwort thkala
Und wenn Sie einfach möchten, schneiden Sie einen Teil eines Datei - sagen wir von Zeile 26 bis 142 - und Eingang ist es zu einem newfile :
cat file-to-cut.txt | sed -n '26,142p' >> new-file.txt
InformationsquelleAutor der Antwort Marc Pe-Pe
Wenn Sie daran interessiert sind nur in den letzten X ZeilenSie können die "tail" - Befehl wie diesen.
Dieser speichert die letzten XXXXX Linien Ihrer log-Datei in eine neue Datei namens "mycroppedfile.txt"
InformationsquelleAutor der Antwort Jose Antonio Escobar Garcia