Was bedeutet der #
Charakter in dieser Zeile:
/bin/sed -e 's#abc#zzz#g'
Was bedeutet der #
Charakter in dieser Zeile:
/bin/sed -e 's#abc#zzz#g'
Antworten:
Es ist ein Trennzeichen, genauso wie "/"
es ist wie 's/abc/zzz/g'
.
es bedeutet, nach "abc" zu suchen, es durch "zzz" zu ersetzen, mit globalem Flag, bedeutet, es für alle "abc" in der Zeile zu tun, nicht nur für das erste.
Sie können auch ein alternatives Trennzeichen für eine Musteradresse verwenden. In diesem Fall müssen Sie es jedoch maskieren, damit es richtig interpretiert wird:
sed -r '\#abc#p'
Es ist ein Trennzeichen oder Trennzeichen. Die am häufigsten verwendete ist /
wie in
sed 's/old/new/' file
Sed nimmt jedoch das erste Zeichen nach den Befehlen als Trennzeichen. Sie können jedes bequeme Zeichen verwenden, zum Beispiel ...
sed 's%old%new%' file
Dies ist sehr nützlich, wenn die Datei /
(oder andere herkömmliche Begrenzungszeichen) enthält. Sie können als Trennzeichen einen Charakter auswählen, von dem Sie wissen, dass Sie ihn nicht in Ihren sed
Ausdruck einfügen müssen, wodurch Sie viel nerviges Entkommen ersparen.
Angenommen, Sie möchten ersetzen
/ubuntu//questions
mit
/ubuntu//posts
Du könntest benutzen
sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file
Aber besser zu benutzen
sed 's|/ubuntu//questions|/ubuntu//posts|' file
sbabeb
macht das gleiche wie s/a/e/
.
/
in anderen Kontexten als dems
(Ersatz-) Befehl durch ein alternatives Zeichen ersetzt werden kann - in diesem Fall muss es jedoch beim ersten Malsed '/foo/d'
foo
sed '\#foo#d'