Dienstag, 17. März 2009
Zeichen ersetzen
In der Shell gibt es immer mehrere Wege zum Ziel. Zeichen oder Substrings ersetzen kann man z.B. entweder mit sed oder der Bash selbst. Was zum Beispiel öfter mal benötigt wird, ist das Ersetzen von Leerzeichen in Variablen, damit sie als Teil eines Linuxpfades dienen können.
Leerzeichen ersetzen:
Nur hinten ersetzen:
Auch praktisch an der Bashmethode ist die Möglichkeit, die Ersetzung nur am Anfang (#) oder Ende (%) durchzuführen.
Voranstellen:
Man könnte auch etwas voranstellen.
Welche Methode die bessere ist, hängt vom Kontext ab. Keine Frage, sed ist bei weitem vielseitiger, aber für so einfache Dinge wie hier gezeigt, ist eine Subshell (wie sed sie öffnen würde) gar nicht nötig.
Ein Nachteil der Bashmethode: sie funktioniert nur mit Variablen, um etwas in einem beliebigen Text zu ersetzen, ist sed geeigneter.
Leerzeichen ersetzen:
var="hallo welt und so weiter"; echo ${var// /_}
Mit sed sähe das dann so aus:var="hallo welt und so weiter"; echo $var | sed -e 's/ /_/g'
Ergebnis bei beiden: hallo_welt_und_so_weiterNur hinten ersetzen:
Auch praktisch an der Bashmethode ist die Möglichkeit, die Ersetzung nur am Anfang (#) oder Ende (%) durchzuführen.
var="txtdatei-txt.txt"; echo ${var/%txt/html}
Mit sed geht das natürlich auch:var="txtdatei-txt.txt"; echo $var | sed 's/txt$/html/'
Ergebnis bei beiden: txtdatei-txt.htmlVoranstellen:
Man könnte auch etwas voranstellen.
var="einedatei.txt"; echo ${var/#/bak_}
Das selbe Beispiel mit sed:var="einedatei.txt"; echo $var | sed 's/^/bak_/'
Erbebnis bei beiden: bak_einedatei.txtWelche Methode die bessere ist, hängt vom Kontext ab. Keine Frage, sed ist bei weitem vielseitiger, aber für so einfache Dinge wie hier gezeigt, ist eine Subshell (wie sed sie öffnen würde) gar nicht nötig.
Ein Nachteil der Bashmethode: sie funktioniert nur mit Variablen, um etwas in einem beliebigen Text zu ersetzen, ist sed geeigneter.
(Seite 1 von 1, insgesamt 1 Einträge)