Unerwartete Ersatz für & mit sed
Ich habe eine CSV-Datei mit einigen Sonderzeichen und deren HTML-entity-Namen
ex: htm.csv
À,À
Á,Á
Â,Â
Ã,Ã
É,É
Ê,Ê
Í,Í
Ó,Ó
Ô,Ô
Õ,Õ
und ich habe eine Reihe von .php
- Dateien, in denen diese Besondere Zeichen vorhanden sind. Ich habe geschrieben ein shell-Skript
#!/bin/bash
IFS=","
while read orig html
do
for fl in *.php; do
mv $fl $fl.old
sed 's/'$orig'/'$html'/g' $fl.old > $fl
done
done< "htm.csv"
aber das problem ist bei der Nutzung der Inhalte der $html
es ist Druck-die Inhalte der $orig
statt "&"
.
InformationsquelleAutor Priya | 2011-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
&
ist ein spezielles Zeichen mit der Bedeutung "der gesamte gematchte string" in ders///
Befehl. Verwenden\&
.für die Dokumentation finden Sie unter hier
"Eine wörtliche \, &, oder eine neue Zeile in die endgültige Ersatz, sicher sein vor den gewünschten \, &, oder eine neue Zeile in der Ersetzung mit \" an."
Beachten Sie, dass die sed hat zu sehen '
\&
'. Sie haben, um das backslash vorbei an der shell, die stark erschwert die Dinge.InformationsquelleAutor Random832
Alle Zeichen als Kommando-Trennzeichen, hier ist ein Beispiel:
InformationsquelleAutor Sivakrishna
Neben der Sonderzeichen können Sie auch die Befehle ein bisschen sicherer und kürzer:
mv
wenn Ihrsed
unterstützt-i
(in-place-Ersetzung)IFS
für den rest der Befehle können Sie beschränken Ihren Anwendungsbereich&
im$html
Das Ergebnis:
Fügen Sie bitte ein Beispiel, wenn es nicht für Sie arbeiten. Es könnte auch andere spezielle Zeichen, die müssten escaped werden.
InformationsquelleAutor l0b0