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

So entfernen Sie Nicht-ASCII-Zeichen mit sed

Die hier angebotenen Lösungen haben bei mir nicht funktioniert. Vielleicht war mein Problem anders, aber ich musste die ASCII-Farben und andere Zeichen aus dem ansonsten reinen ASCII-Text entfernen.

Folgendes funktionierte jedoch für mich:

Escape-Codes aus ASCII-Text entfernen

sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g'

Im Kontext (BASH):

$ printf "\e[32;1mhello\e[0m\n"
hello

$ printf "\e[32;1mhello\e[0m\n" | cat -vet
^[[32;1mhello^[[0m$

$ printf "\e[32;1mhello\e[0m\n" | sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g' | cat -vet
hello$

Hast du es versucht

cat /bin/mkdir | tr -cd "[:print:]"

Ich denke, es löst das Problem ?

Wenn Sie nur Textinhalte interessieren, können Sie auch

verwenden
cat /bin/mkdir | strings

Wissen Sie, welche Codierung die Datei derzeit verwendet? Wenn ja, können Sie es mit iconv konvertieren. Es ist ein Dienstprogramm zum Konvertieren von einer Zeichencodierung in eine andere. Wenn also die Originaldatei in UTF-8 vorliegt und Sie in ASCII konvertieren möchten, können Sie Folgendes verwenden:

iconv -f utf8 -t ascii <inputfile>

Der Dateibefehl für die Eingabedatei kann Ihnen die aktuelle Kodierung mitteilen.

Interessanterweise gibt es einen Befehl namens enca, der sein Bestes tun wird, um die verwendete Zeichencodierung zu bestimmen, wenn Sie die Sprache des Inhalts der Datei kennen.

Diese andere Frage könnte die Antwort sein.


Dies scheint mit sed nicht zu funktionieren . Vielleicht tr reicht?

tr -d '\200-\377'

Oder mit der Ergänzung:

tr -cd '\000-\177'

Linux
  1. So entfernen Sie Benutzer in Linux über die Befehlszeile

  2. Debian:So installieren oder entfernen Sie DEB-Pakete mit dpkg

  3. So löschen Sie eine Festplattenpartition mit dem Parted-Befehl

  4. Mit sed einen Textblock entfernen

  5. Wie verwende ich sed, um nur doppelte Leerzeilen zu entfernen?

So entfernen Sie Verzeichnisse und Dateien unter Linux

So entfernen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

Unix Sed Tutorial:So schreiben Sie mit Sed in eine Datei

So entfernen Sie eine E-Mail-Weiterleitung mit cPanel

Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)