Linux-Befehl zu ersetzen, string in GROßE Datei mit einem anderen string
Ich habe eine riesige SQL-Datei wird auf dem server ausgeführt. Der dump ist von meiner Maschine, und dort sind ein paar Einstellungen in Bezug auf meine Maschine. Also im Grunde, ich will, dass jedes vorkommen von "c://temp"
zu ersetzen durch "//home//some//blah"
Wie kann man das von der Befehlszeile aus ausgeführt?
- Sie vermissen ein trailing % in Ihrem Befehl. Es ist s%foo%bar% s nicht%foo%bar
Du musst angemeldet sein, um einen Kommentar abzugeben.
sed ist eine gute Wahl für große Dateien.
Es ist eine gute Wahl, da Lesen nicht die ganze Datei auf einmal zu ändern. Zitat aus dem Handbuch:
Entsprechenden Handbuch Abschnitt ist hier. Eine kleine Erklärung folgt
Beispiel
Nur der Vollständigkeit halber. Im Ort, Austausch mit
perl
.Kein backslash-escapes erforderlich. 😉
-i
Flagge ohne eine Erweiterung, die Sie erhalten keine Sicherung. Wenn Sie möchten, dass ein backup, versuchen Sie-i.bak
was haben die in-place-editoriginal.bak
ziemlich viel kostenlos.Versuchen sed? So etwas wie:
Entkommen alle diese Schrägstriche macht diese schrecklich Aussehen, obwohl, ist hier ein einfacheres Beispiel, die änderungen von foo nach bar.
Wie andere bemerkt haben, können Sie Ihre eigenen Begrenzer, die verhindern, dass die schiefe Zahnstocher-Syndrom in diesem Fall:
Der Clou sed ist, dass es den Betrieb auf einem stream eher als eine Datei auf einmal, also können Sie große Dateien werden nur mit einer bescheidenen Menge an Speicher.
Es gibt auch eine nicht-standard-UNIX-utility, rpl, die nicht die exakt gleiche Sache, die
sed
Beispiele; jedoch, ich bin mir nicht sicher, obrpl
betreibt streamwise, sosed
kann hier die bessere Alternative.Den
sed
Befehl tun kann.Eher als Flucht vor den Schrägstrichen, können Sie wählen Sie ein anderes Trennzeichen (_ in diesem Fall):
- P zu behandeln, wird dieses Skript als eine Schleife, es liest die angegebene Datei zeilenweise ausführen der regex suchen und ersetzen.
ich Diese Flagge sollte verwendet werden, in Verbindung mit dem -p flag. Dieses Perl-Befehle zum Bearbeiten der Datei.
-e bedeutet Nur das ausführen dieser perl-code.
Glück
gawk