2017-03-11 1 views
0

Ich habe versucht:Sed: wie kann ich alle „#“ Zeichen mit „%“ ersetzen (aber in einer Batch-Datei)

sed "s/#/\%/g" 

aber die Batch-Datei die% abgestreift und sed gab einen Fehler

sed "s/#/\x37/g" 

hat nicht funktioniert, es gibt Text x37 gerade dort in

Hinweis muß ich dies in einer Batch-Datei arbeiten, nicht über die Befehlszeile.

+0

Try '%%', glaube ich '%' ist ein Escape-Zeichen. Escape-Zeichen, die sich selbst entziehen, werden normalerweise zu einem einzelnen Literal. –

+0

Ausgezeichnet danke das funktioniert! – Arthur

+3

@SteveBuzonas - Das Stapel-Escape-Zeichen ist normalerweise das '^', aber es funktioniert nicht mit '%'. Das '%' wird für die Erweiterung der Umgebungsvariablen, für die Definition und Erweiterung von Variablen und für die Erweiterung von Argumenten verwendet. Ein '%' Literal muss in einem Batch-Script als '%%' maskiert werden. – dbenham

Antwort

1

%% funktioniert der Trick:

echo "foo ## bar ##" | sed 's/#/%%/g' 
+1

überprüfen Sie einfach, ob dies funktioniert, wie Sie beabsichtigen ... einfache Anführungszeichen und doppelte Anführungszeichen können unterschiedliche Ergebnisse geben, abhängig von der Shell, die Sie verwenden – Sundeep

+0

danke, scheint ok unter Dos Batch zu arbeiten – Arthur

Verwandte Themen