Entfernen von nicht-alphanumerischen Zeichen mit sed

Ich versuche zu validieren einige Eingaben, entfernen Sie eine Menge von Zeichen. Nur alphanumerische Zeichen sowie Punkt, Unterstrich, Bindestrich sind erlaubt. Getestet hab ich die regex-Ausdruck [^\w.-] hier http://gskinner.com/RegExr/, und es entspricht dem, was ich will, entfernt, so dass ich nicht sicher, warum sed ist wieder das Gegenteil. Was bin ich?

Mein end-Ziel ist die Eingabe "Â10.41.89.50 " und bekommen "10.41.89.50".

Ich versucht habe:

echo "Â10.41.89.50 " | sed s/[^\w.-]//g zurück Â...

echo "Â10.41.89.50 " | sed s/[\w.-]//g und echo "Â10.41.89.50 " | sed s/[\w^.-]//g zurück Â10418950

Versuchte ich die Antwort hier gefunden Überspringen/entfernen von nicht-ascii-Zeichen mit sed aber nichts wurde entfernt.

Kommentar zu dem Problem
Versuchen Sie, hinzufügen von -r option auf sed, so wird es erkennen erweiterte reguläre Ausdrücke. Kommentarautor: Barmar
sed nicht verstehen, die besonderen Charakter-Klassen wie \ - w. Verwenden Sie einfach [a-zA-Z0-9_-]. Kommentarautor: Mark Reed
weder -r oder [a-zA-Z0-9_-] arbeitet. Auch echo "Â10.41.89.50 " | sed s/[a-zA-Z0-9.-]//g zurückgegeben  echo "Â10.41.89.50 " | sed s/[^a-zA-Z0-9.-]//g ausgegeben Â10.41.89.50. Kommentarautor: gorideyourbike

InformationsquelleAutor der Frage gorideyourbike | 2013-11-15

Schreibe einen Kommentar