Ich verwende importierende Systeme basierend auf Textdateien mit Trennzeichen. Die verwendeten Dateien können manchmal fast 2 GB groß sein und ich muss einige Zeilen aus dieser Datei überprüfen. Also ich möchte wissen, wie kann ich (in einer anderen Datei oder nur auf dem Bildschirm) die Zeilen von bestimmten Wert ausgeben? Z.B. Zeilennummer 1010123, 1002451, 994123 usw. genau so wie in der Quelldatei?Wie bekomme ich bestimmte Zeilen aus einer riesigen Textdatei in Unix?
Antwort
Um Linie N
zu drucken:
sed 'Nq;d' file
mehrere Zeilen drucken (vorausgesetzt, sie sind in aufsteigende Reihenfolge) z 994.123, 1.002.451, 1.010.123.
sed '994123p;1002451p;1010123q;d' file
Die q
, nachdem die letzte Zeilennummer sed
sagt zu beenden, wenn es die 1010123th Linie erreicht, statt Zeit zu verschwenden, um über die verbleibenden Linien Looping, dass wir nicht interessiert sind Das ist Warum ist es bei großen Dateien effizient?
Sie können dies tun, mit vielen Unix-Tools, zum Beispiel mit awk
:
# print first 5 lines with awk
awk 'NR>=1&&NR<=5{print}NR>=6{exit}' file
# print selection of lines
awk 'NR==994123||NR==1002451||NR==1010123{print}NR>1010123{exit}' file
Wie 'sed' /' awk' führen auf sehr große Dateien wie diejenigen, die er in seiner Frage erwähnt (~ 2 GB)? –
Die Zeilennummern sind nicht fortlaufend. Nicht erste Nth oder letzte Nth. Sie sind nur Linien mit Fehlern. Ich habe Zeilennummern in einer Tabelle und möchte nur bestimmte Zeilennummern ausgeben. – BogdanM
@BogdanM siehe das zweite 'awk' Beispiel dafür (Dogbane Antworten zeigt, wie mit sed) Ich dachte, Druckbereiche wären auch für Sie nützlich. –
In Python:
readThisFile = open('YOURFILE')
outputFile = open('OUTPUT', w)
for actualline, linetext in enumerate(readThisFile):
if actualline == WANTEDLINE
outputFile.write(linetext)
else:
pass
Wenn Sie wollte das Skript ändern können, mit Argumenten zu arbeiten (wie getline.py 1234)
Es wäre effizienter zu beenden, nachdem 'outputFile.write (linetext)' auch gedruckt wird, da die Frage nur 'unix' markiert ist, so dass ich unsicher bin, ob das OP 'Python' zur Verfügung hat. –
Ich kann nicht sagen, ob Python verfügbar ist oder nicht (er hat nicht gesagt, in welcher Sprache er die Lösung geschrieben haben möchte). Und wegen der Kündigung an der Linie: Ja, das ist möglich, aber mein Skript ist kein "es ist bereit zu verwenden, nur kopieren und einfügen" -Skript, es ist nur ein Hinweis, wie es gemacht werden kann – chill0r
- 1. Zeilen aus einer Textdatei in Unix kombinieren?
- 2. UNIX - bestimmte Zeilen löschen
- 3. Wie entferne ich Zeilen aus einer Textdatei in Ruby?
- 4. Wie lese ich lange Zeilen aus einer Textdatei in C++?
- 5. Notepad ++ RegEx: Suche nach mehreren Wörtern in einer riesigen Textdatei
- 6. Wie bekomme ich eine Variable aus einer separaten Textdatei
- 7. Eine bestimmte Zeile aus einer Textdatei in Java lesen
- 8. Wie bekomme ich zwei weitere Zeilen in Textdatei
- 9. Zeilen aus Textdatei extrahieren
- 10. Wie lösche ich Zeilen einer Textdatei?
- 11. Wie bestimmte Kriterien in eine Textdatei aus einer Binärdatei schreiben
- 12. Extrahieren von Daten aus Zeilen einer Textdatei
- 13. Wie die erste Zeile, die eine bestimmte Zeichenfolge in einer Textdatei Unix enthält?
- 14. Wie Zeilen in Textdatei nach einer zweiten Textdatei zu sortieren
- 15. Wie lade ich bestimmte Zeilen aus einer TXT-Datei in Python?
- 16. ignorieren bestimmte Zeilen aus einer Tabelle
- 17. Wie bekomme ich GMT-Zeit in Unix?
- 18. wie doppelte Zeilen in einer Textdatei in Unix Bash zu löschen?
- 19. Wie bekomme ich git merge um bestimmte Zeilen zu ignorieren?
- 20. Eine bestimmte Zeile in einer Textdatei löschen?
- 21. C# Wie zähle ich Zeilen in einer Textdatei
- 22. Wie kann ich Zeilen in einer Textdatei abrufen
- 23. Wie bekomme ich bestimmte Variablen in einer Datei?
- 24. Extrahieren Besondere Zeilen in einer Textdatei
- 25. Wie bekomme ich bestimmte Daten aus der MySQL-Datenbank?
- 26. Entfernen Sie Zeilen aus einer Textdatei, die keine bestimmte Zeichenfolge mit Python enthalten
- 27. Wie bekomme ich Anführungszeichen in der Ausgabe in Unix?
- 28. Wie lösche ich eine bestimmte Zeile aus einer Datei in Unix?
- 29. Wie bekomme ich Hardwareinformationen über Linux/Unix?
- 30. Coldfusion lesen bestimmte Zeile aus der Textdatei
Tausend Dank. Es funktionierte wie ein Charme :) – BogdanM