it-swarm.com.de

Kann ich sed verwenden, um eine Variable in bash zu manipulieren?

In meinem Programm möchte ich zuerst die Benutzereingabe erhalten und ein \ vor jedem / also schreibe ich das, aber es funktioniert nicht.

echo "input a website"
read website

sed '/\//i\/' $website
47
Leo Chan

Versuche dies:

website=$(sed 's|/|\\/|g' <<< $website)

Bash unterstützt tatsächlich diese Art von Ersatz nativ :

${parameter/pattern/string} - Ersetzen Sie die erste Übereinstimmung von pattern durch string.
${parameter//pattern/string} - Ersetzen Sie alle Übereinstimmungen von pattern durch string.

Deshalb können Sie Folgendes tun:

website=${website////\\/}

Erläuterung:

website=${website // / / \\/}
                  ^  ^ ^  ^
                  |  | |  |
                  |  | |  string, '\' needs to be backslashed
                  |  | delimiter
                  |  pattern
                  replace globally
106
Eugene Yarmash
echo $website | sed 's/\//\\\//g'

oder zur besseren Lesbarkeit:

echo $website | sed 's|/|\\/|g'
13
Karoly Horvath