Split-text-Datei in mehrere Dateien
Ich bin mit großen text-Datei mit 1000 abstracts mit Leerzeile zwischen den einzelnen Abstrakt . Ich splitten möchten diese Datei in 1000 text-Dateien.
Meine Datei sieht wie
16503654 Three-dimensional structure of neuropeptide k bound to dodecylphosphocholine micelles. Neuropeptide K (NPK), an N-terminally extended form of neurokinin A (NKA), represents the most potent and longest lasting vasodepressor and cardiomodulatory tachykinin reported thus far.
16504520 Computer-aided analysis of the interactions of glutamine synthetase with its inhibitors. Mechanism of inhibition of glutamine synthetase (EC 6.3.1.2; GS) by phosphinothricin and its analogues was studied in some detail using molecular modeling methods.
- Darf ich vorschlagen, um zu vermeiden, um die Erstellung zu viele Dateien oder Verzeichnisse in einem Verzeichnis. Kann es auf jeden Fall verlangsamen die stat(2) - Aufrufe. Ein paar tausend ist nicht ein großes Problem, aber einige zehn-Tausende werden können. Der Verlauf dieser Grenze ist abhängig von der Maschine (HDD) - Betriebssystem und Datei-system, das Sie verwenden.
- mögliche Duplikate von Split ein .txt-Datei basierend auf dem Inhalt
- möglich, Duplikat der Split eine Datei in mehrere Dateien-basierend auf Trennzeichen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie split und setzen Sie "ANZAHL Zeilen pro Ausgabedatei" auf 2. Jede Datei müsste eine text-Zeile und eine leere Zeile.
Können Sie immer verwenden Sie die csplit-Befehl. Dies ist ein Datei-splitter, sondern auf Basis eines regex.
etwas entlang der Linien von :
Es ist ungetestet und müssen möglicherweise ein wenig Feintuning aber.
CSPLIT
csplit -m -f /tmp/files INPUTFILE '/^\s*$/' '{*}'
Etwas wie dieses:
Damit schaffen wir 1000 Dateien mit dem Dateinamen als abstrakte Zahl. Dieser awk-code schreibt die Datensätze in einer Datei, deren name stammt aus der 1. Feld($1). Dies geschieht nur, nur, wenn die Anzahl der Felder, die mehr als 0(NF)