2016-04-11 34 views
0

Ich möchte fw[" durch fw. ersetzen.Suchen und Ersetzen - Bash

Ich habe einige sed Befehle versucht, konnte aber das Problem nicht lösen.

Ich versuchte Befehl, tr und sed Befehle. Aber da die Charaktere, die ich ersetzen möchte, Sonderzeichen sind, bekomme ich viele Fehler.

Das ist mein Eingang:

endpoint.os.version="Windows 10" 
endpoint.fw["MSWindowsFW"].version="10.0" 
endpoint.av["AlwilAV"].version="11.1.2253" 
endpoint.os.hotfix["KB3116278"]="true" 

Dies ist die Ausgabe Ich möchte:

endpoint.os.version="Windows 10" 
endpoint.fw.MSWindowsFW.version="10.0" 
endpoint.av["AlwilAV"].version="11.1.2253" 
endpoint.os.hotfix["KB3116278"]="true" 

Können Sie mir helfen, ein zu schreiben solche verwandeln?

+1

Mit welcher Art von Eingabe arbeiten Sie? Ein Strom? Eine oder mehrere Dateien? Eine Variable? Kurzer Hinweis: escape (zB: 'echo 'fw [' '| tr -d' ['''). – bufh

+0

Hallo! es ist nur eine Datei hat 4 Zeilen (Eingänge) – Bala

Antwort

1

Unter der Annahme, file.txt:

endpoint.os.version="Windows 10" enter code here 
endpoint.fw["MSWindowsFW"].version="10.0" enter code here 
endpoint.av["AlwilAV"].version="11.1.2253" enter code here 
endpoint.os.hotfix["KB3116278"]="true" enter code here 

Als POSIX regular expressions are greedy Sie es so mit Perl tun könnte:

perl -pe 's/fw\["(.*?)"\]/fw.\1/g' file.txt 

oder in reiner sed:

sed 's/fw\["\([^"]*\)"\]/fw.\1/g' file.txt 

Hinweis: Ich empfehle Ihnen, zu verwenden https://regex101.com/ oder https://www.debuggex.com/ zu testen, zu visualisieren und zu unterstreichen und was dein regulärer Ausdruck tut.

Sonst mussten Sie für Ihr Problem die "Sonderzeichen" vermeiden, die von Ihrer Shell interpretiert werden sollten; In meinen Beispielen setze ich sie zwischen einfache Anführungszeichen, aber Sie könnten ihnen entkommen sein (zB: tr -d \[\" entspricht tr -d '["').

+0

Vielen Dank für Ihre Hilfe. Es löst mein Problem, aber es ersetzt alle ["mit". ". Ich ersetze sehr spezifisch fw [" mit fw. und lass den Rest wie es ist – Bala

+0

Bearbeitet ... passt es jetzt zu deinem Bedarf? – bufh

+0

In der Tat. Ich habe, was ich brauche. Danke für die schnellere und beste Antwort. – Bala