ASCII-Zeichen sind Zeichen im Bereich von 0 bis einschließlich 177 (oktal) .
Verwenden Sie, um Zeichen außerhalb dieses Bereichs in einer Datei zu löschen
LC_ALL=C tr -dc '\0-\177' <file >newfile
Der trBefehl ist ein Dienstprogramm, das einzelne Zeichen bearbeitet , entweder durch andere einzelne Zeichen ersetzt (Transliteration), löscht oder Läufe desselben Zeichens zu einem einzelnen Zeichen komprimiert.
Der obige Befehl würde fileden geänderten Inhalt lesen und in ihn schreiben newfile. Mit dieser -dOption trlöscht das Dienstprogramm Zeichen (anstatt sie zu transliterieren) und -cberücksichtigt Zeichen außerhalb des angegebenen Intervalls (statt innerhalb).
LC_ALL=Cstellt sicher, dass jeder Byte-Wert ein gültiges Zeichen bildet. Ohne diese trOption würden einige Implementierungen abgebrochen, wenn Bytefolgen gefunden würden, die in der Zeichencodierung des Gebietsschemas keine gültigen Zeichen bilden.
Verwenden Sie, um die Originaldatei durch die geänderte zu ersetzen
LC_ALL=C tr -dc '\0-\177' <file >newfile &&
mv newfile file
Dadurch wird die neue Datei nach erfolgreichem Abschluss in den Namen der alten Datei umbenannt tr. Wird der trVorgang nicht erfolgreich abgeschlossen, da die ursprüngliche Datei nicht gelesen oder nicht in die neue Datei geschrieben werden konnte, bleibt die ursprüngliche Datei unverändert.
Um die Metadaten (Berechtigungen usw.) der Originaldatei so weit wie möglich zu erhalten, verwenden Sie alternativ
cp file tmpfile &&
LC_ALL=C tr -dc '\0-\177' <tmpfile >file &&
rm tmpfile