2016-10-21 3 views
0

Ich möchte Datei in String konvertieren und einige Verarbeitung und erhalten Sie wieder dieselbe Datei in bash Shell in Linux wieder.Datei an String und String an Datei in Bash

Hauptsächlich ist, Ziel, neue Linie '\n' von ';' zu entfernen, die in der Datei und Datei Gewinn vorhanden ist, nicht durch ';' erhalten, indem '\n' zu ersetzen. (; Ist nicht in der Datei vorhanden ist)

wenn ich Datei überprüft mit :set list zu Überprüfen Sie alle Zeichen in der Datei. kann ich $ am Ende der Linie sehen, und wenn ich laufe:

:%s/\n\;\g 

zu ersetzen es funktioniert, aber nächste

:%s/;/\n\g 

funktionieren nicht, ich kann ^@ statt $ am neuen Charakter sehen Linie.

Wie kann es in der Schale erreicht werden?

+2

Was tun was meinen Sie? Möchten Sie den Inhalt einer ganzen Datei lesen, dieses Ende als neue Datei schreiben? Besser ein Beispiel geben; und füge das vollständige Skript ein, das du bisher geschrieben hast. – GhostCat

Antwort

1

In Anbetracht Sie sprechen über vim Befehlszeile. Ich bezweifle stark, wenn Sie sagten, :%s/\n\;\g funktioniert.

Ersetzen von Zeilenvorschub durch ';' versuchen: :%s/\n/;/g

Ähnlich ';' zu Newline versuchen :%s/;/\r/g

Klare Erklärung, warum zu verwenden \r kann here gefunden werden.

Die Verwendung von %s ist :%s/<string_to_be_replaced>/<string_to_be_replaced_with>/g.

1

Sprechen Sie wirklich über die Shell oder über vi? Wenn Sie die Schale bedeuten tun, ist der einfachste Weg tr zu verwenden, um einzelne Zeichen zu transkribieren:

Ersetzen Sie alle Zeilenumbrüche mit Semikolons:

tr '\n' ';' <inputFile> outputFile 

Ersetzen Sie alle Semikolons mit Zeilenumbrüchen:

tr ';' '\n' <inputFile> outputFile 
Verwandte Themen