sed
ist ein Stream-Editor-Tool, das reguläre Ausdrücke anwendet, um die Eingabe zu transformieren. Der Befehl
sed s/regex/replace/g
von stdin liest und jedes Mal, es ist etwas passenden regex
findet, ersetzt es mit dem Inhalt replace
. In Ihrem Fall den Befehl
sed s/[a-z A-Z 0-9 _]//g
hat [a-z A-Z 0-9]
als regulärer Ausdruck und den leeren String als Ersatz. (Hast du einen Bindestrich zwischen A und Z vergessen?) Dies bedeutet, dass alles, was dem angegebenen regulären Ausdruck entspricht, gelöscht wird. Dieser reguläre Ausdruck bedeutet „jedes Zeichen, das entweder zwischen a
und z
ist, zwischen A
und Z
zwischen 0
und 9
, einem Raum oder einem Unterstrich“, so dass dieser Befehl im wesentlichen löscht alle alphanumerischen Zeichen, Leerzeichen oder Unterstreicht aus dem Eingang und Deponien Was bleibt übrig? Das Testen, ob die Ausgabe leer ist, fragt dann, ob darin Zeichen vorhanden sind, die nicht alphanumerisch, Leerzeichen oder Zahlen sind, und so funktioniert der Code.
Ich würde empfehlen, sed
zu der Liste der Tools hinzuzufügen, mit denen Sie eine grundlegende Vertrautheit erhalten sollten, da es in der Befehlszeile ziemlich häufig zu sehen ist.
Wenn alle zulässigen Zeichen entfernt werden (was das "sed" tut) und das Ergebnis nicht leer ist, bedeutet dies, dass noch ungültige Zeichen übrig waren. – kaylum
Welche Shell ist das? –