Ich habe eine große Datei und muss sie in zwei Dateien aufteilen. Angenommen, in der ersten Datei sollen die 1000 Zeilen ausgewählt und in eine andere Datei eingefügt und diese Zeilen in der ersten Datei gelöscht werden.
Ich habe versucht mit, split
aber es erstellt mehrere Stücke.
text-processing
awk
split
csplit
Aravind
quelle
quelle
split --help
?Antworten:
Der einfachste Weg ist wahrscheinlich zu verwenden
head
undtail
:Damit werden die ersten 1000 Zeilen von
input-file
inoutput1
und alle Zeilen von 1001 bis zum Ende in gesetztoutput2
quelle
Ich denke, das
split
ist dein bester Ansatz.Versuchen Sie es mit der
-l xxxx
Option, wobei xxxx die Anzahl der Zeilen ist, die in jeder Datei enthalten sein sollen (Standard ist 1000).Sie können diese
-n yy
Option verwenden, wenn Sie sich mehr Gedanken über die Anzahl der erstellten Dateien machen. Die Verwendung-n 2
teilt Ihre Datei in nur 2 Teile, unabhängig von der Anzahl der Zeilen in jeder Datei.Mit können Sie die Anzahl der Zeilen in Ihrer Datei zählen
wc -l filename
. Dies ist der Befehl 'wordcount' mit der Option lines.Verweise
man split
man wc
quelle
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
.Dies ist ein Job für
csplit
:wird
s
gespalten ilentlyinfile
, das erste Stückxx00
- bis zu aber nicht einschließlich Leitung 1001 und das zweite Stückxx01
- die restlichen Zeilen.Sie können mit den Optionen spielen, wenn Sie andere Ausgabedateinamen benötigen, z. B.
-f
ein Präfix verwenden und angeben :erzeugt zwei Dateien namens
piece.00
undpiece.01
Mit einem Smart
head
könnten Sie auch Folgendes tun:quelle
csplit
. Sehr schön. (Ich habe gerade die Liste der POSIX-Befehle durchgelesen und hatte große Probleme, michcsplit
zuerst mit dem Zweck des Befehls zu befassen. Es stellt sich heraus, dass es wirklich sehr einfach ist.) :)Eine einfache Möglichkeit, mit einem einzigen Befehl das zu tun, wonach die Frage verlangt:
oder für diejenigen unter Ihnen, die es wirklich hassen, lange, intuitiv verständliche Befehle einzugeben,
quelle