Wie fange ich Backslashes in einem sed-Skript, das in ein Bash-Skript eingebettet ist

8

Ich möchte eine Datei über ein sed-Skript in einem Bash-Skript bearbeiten. Ich möchte, dass es später leicht zu pflegen ist. leicht zu verstehen und zu modifizieren. Die Ersatzzeichenfolge sieht folgendermaßen aus:

%Vor%

In einer perfekten Welt würde es das mögen:

%Vor%

Das Problem ist, dass bash und sed das \ entfernen, was das folgende Ergebnis in der Datei ergibt:

%Vor%

Offensichtlich können einfache Anführungszeichen nicht verwendet werden. Eine Brute-Force-Lösung ist die Verwendung von Fluchten, aber damit dies funktioniert, bekomme ich eine wirklich hässlich aussehende Zeile:

%Vor%

Ich möchte, dass das Skript lesbar und eigenständig ist (keine externen Dateien verwendet). Irgendwelche Alternativen zu den oben genannten?

    
hauptmech 03.01.2012, 13:45
quelle

4 Antworten

5

Bashs printf kann die notwendigen Escapes hinzufügen und die einzufügende Zeichenfolge in einer lesbaren, editierbaren Form belassen.

%Vor%

Wenn man nicht versucht, alles auf eine Linie zu stecken, wird das Ganze klarer.

%Vor%     
hauptmech 04.01.2012, 14:07
quelle
4

Dies könnte für Sie funktionieren:

%Vor%     
potong 03.01.2012 14:27
quelle
1

Verwenden Sie eine sed-Skriptdatei mit sed -f . Diese Alternative ist auch nicht schön, weil es bedeutet, dass eine zusätzliche Datei herumliegt, aber Sie vermeiden zumindest Shell-Fluchten.

    
thiton 03.01.2012 13:48
quelle
1

Wie wäre es damit:

%Vor%

Es ist in zwei Durchgängen weniger effizient, aber einige Mikrosekunden sind für die meisten Menschen nicht wahrnehmbar.

    
Spencer Rathbun 03.01.2012 14:39
quelle

Tags und Links