So ersetzen Sie die line-endings in VIM
Wie kann ich ersetzen Sie alle line-endings in einer großen Datei (>100MB)?
Ich habe versucht, das zu tun
:%s/\n/, /g
aber es ist zu langsam.
- Warum wollen Sie dies tun, in VIM. Sie werden nur am Ende mit einer langen Linie, die Sie nicht Lesen können (mit den Augen ist.) Auch, was die Zeilenenden bestehen: DOS -, UNIX -, MAC-oder eine Kombination?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, ich ging durch und getestet/zeitlich einige der Antworten, die gegeben wurden von anderen Personen, sowie ein python-Antwort auf meine eigene. Hier ist, was ich habe:
tr:
python:
awk:
perl:
sed:
Hier ist die Datei die ich verwendet habe:
Ursprünglich die timings wurden in cygwin, haben Sie sich nun genommen worden, mit vollständig aktualisierten ubuntu 9.10. Auch die text-Dateien, die Größe wurde erhöht auf 100 MB, mit Linien 80ish Zeichen breit. Wie man sehen kann, ziemlich viel alles andere als sed ist eine gute Idee.
:%s/$/, /
gefolgt von einem:1,$j
könnte schneller sein. Ansonsten, tun Sie es in einem externen Programm:Weiß nicht, aus der Spitze von meinem Kopf, die wäre am schnellsten.
perl -ne 'chomp; print "$_, "' file
.-n
"meint while-Schleife"-n
.Verwenden Sie dieses Perl-Skripts gehen Sie durch Ihre Datei; es würde schneller sein als holding, alles im Speicher mit VIM. Nur Rohr Ausgabe in eine neue Datei.
$_
kann nicht von einem newline-mit Ausnahme des letzten Charakter -chomp
ist wahrscheinlich viel schneller.Tun, Sie zu tun haben, das in vim?
Es ist schön, Unix-Dienstprogramm, das bedeutet, die Figur der übersetzung. Es ' C genannt
tr
.Einige Referenz.
In deinem Fall wäre es:
tr
gibt es?Das beste tool ist sed, und Sie können verwenden Sie es mit :! Befehl
so verwenden
:!sed -e 's/\n/,/g' % > %.tmp ; cat %.tmp > % ; rm %.tmp'
Benötigen Sie eine tmp-Datei ändern, bevor Sie integrieren in Ihre aktuelle Datei