GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Entfernen Sie alle Sonderzeichen und Groß-/Kleinschreibung aus der Zeichenfolge in Bash

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

Linux
  1. Sed Zeichen aus neuer Zeile entfernen?

  2. Einen String mit einfachen Anführungszeichen und anderen Sonderzeichen drucken?

  3. So entfernen Sie alle .svn-Verzeichnisse aus meinen Anwendungsverzeichnissen

  4. Testen Sie, ob die Zeichenfolge in Bash keine Leerzeichen enthält

  5. Wie grep ich eine Zeichenfolge in einem Verzeichnis und allen seinen Unterverzeichnissen?

Syntax und Beispiele für Bash-Case-Anweisungen

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So entfernen Sie alle Leerzeichen aus einer Textdatei

Verzeichnis aus Dateiname erstellen und Bash verschieben

Wie benenne ich alle Dateien mit Sonderzeichen und Leerzeichen in einem Verzeichnis um?

Wie entferne ich ungültige Zeichen aus Dateinamen?