cat yourfile.txt | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]'
Das erste tr
löscht Sonderzeichen. d
bedeutet löschen, c
bedeutet Komplement (Invertieren des Zeichensatzes). Also -dc
bedeutet, alle Zeichen außer den angegebenen zu löschen. Die \n
und \r
sind enthalten, um Zeilenumbrüche im Linux- oder Windows-Stil beizubehalten, was Sie vermutlich wollen.
Der zweite übersetzt Großbuchstaben in Kleinbuchstaben.
Reine BASH 4+-Lösung:
$ filename='Some_randoM data1-A'
$ f=${filename//[^[:alnum:]]/}
$ echo "$f"
SomerandoMdata1A
$ echo "${f,,}"
somerandomdata1a
Eine Funktion dafür:
clean() {
local a=${1//[^[:alnum:]]/}
echo "${a,,}"
}
Probieren Sie es aus:
$ clean "More Data0"
moredata0
wenn Sie mkelement0 und den Dan Bliss-Ansatz verwenden. Sie können sich auch den regulären Ausdruck sed + POSIX ansehen.
cat yourfile.txt | sed 's/[^a-zA-Z0-9]//g'
Sed passt alle anderen Zeichen, die nicht in den Klammern enthalten sind, außer Buchstaben und Zahlen, an und entfernt sie.
Ich habe tr
verwendet um alle Zeichen zu entfernen, die nicht Teil von [:print:]
sind Klasse
cat file.txt | tr -dc '[:print:]'
oder
echo "..." | tr -dc '[:print:]'
Zusätzlich möchten Sie vielleicht |
(leiten) Sie die Ausgabe an od -c
um das Ergebnis zu bestätigen
cat file.txt | tr -dc '[:print:]' | od -c