Vor kurzem musste ich ein kleines Skript schreiben, das VMs in XenServer analysiert. Da die Namen der VMs in Windows XP oder Windows Server 2008 hauptsächlich Leerzeichen enthalten, musste ich diese Leerzeichen kürzen und durch Unterstriche _ ersetzen. Ich habe eine einfache Lösung gefunden, um dies mit sed zu tun. Dies ist ein großartiges Werkzeug, wenn es um die Manipulation von Saiten geht.
echo "This is just a test" | sed -e 's/ /_/g'
kehrt zurück
This_is_just_a_test
Antworten:
Sie können dies nur mit der Shell tun, ohne
tr
odersed
quelle
${str//[^a-zA-Z0-9]/_}
; Wenn Sie sich nicht an eine reine POSIX-Shell halten, können Sie die verfügbaren Funktionen nutzen.Dies ist eine Grenzprogrammierung, aber prüfen Sie die Verwendung von tr :
Sollte es tun. Der erste Aufruf drückt die Leerzeichen zusammen, der zweite wird durch einen Unterstrich ersetzt. Sie müssen wahrscheinlich TABs und andere Leerzeichen hinzufügen. Dies gilt nur für Leerzeichen.
quelle