ubuntuusers.de

Mit sed ascii code entfernen

Status: Ungelöst | Ubuntu-Version: Lubuntu 16.04 (Xenial Xerus)
Antworten |

FragNet

Anmeldungsdatum:
28. September 2014

Beiträge: 15

Hallo Leute, ich habe mich in den letzten Stunden an einem Problem festgebissen, dass ich alleine nicht gelöst bekomme. Wie bekomme ich diese ascii Zeichen am Anfang und am Ende dieser Zeie aus meinem Text mit sed gelöscht?

�    HÄTTE SO EIN SCHÖNER ABEND WERDEN KÖNNEN                          �  

Vielen Dank!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11250

Wohnort: München

Ein "�" ist kein ASCII-Zeichen: http://www.fileformat.info/info/unicode/char/0fffd/index.htm

Schau dir die Datei mit einem Hex-Editor an, dann weißt du, welche Bytefolge du da genau vor dir hast.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17606

Wohnort: Berlin

Es ist unklar, was "diese Zeichen" umfasst, wieviele Zeichen, und was sie identifiziert. Der Wert des Zeichens? Die Position?

1
2
echo "�    HÄTTE SO EIN SCHÖNER ABEND WERDEN KÖNNEN                          �  " | sed -r 's/.*(HÄ.*NEN).*/\1/' 
HÄTTE SO EIN SCHÖNER ABEND WERDEN KÖNNEN

Vorne nur das erste Zeichen kann man so abschneiden:

1
2
echo "�    HÄTTE SO EIN SCHÖNER ABEND WERDEN KÖNNEN                          �  " | sed -r 's/.(.*NEN).*/\1/' 
    HÄTTE SO EIN SCHÖNER ABEND WERDEN KÖNNEN

Aber was machen wir hinten? Dass es da um das letzte Zeichen geht, was eine Art Whitespace zu sein scheint, glaube ich nicht ganz. ☺

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13177

Möglicherweise ist auch das Kommando strings eine Lösung.

FragNet

(Themenstarter)

Anmeldungsdatum:
28. September 2014

Beiträge: 15

seahawk1986 schrieb:

Ein "�" ist kein ASCII-Zeichen: http://www.fileformat.info/info/unicode/char/0fffd/index.htm

Schau dir die Datei mit einem Hex-Editor an, dann weißt du, welche Bytefolge du da genau vor dir hast.

Danke für deine Hilfe!

Ich habe mit einem Hexeditor die Octalzahl von dem Zeichen � rausgefiltert und diesen dann mit sed gelöscht.

1
sed -r $'s/\o333//g'

Auch an alle anderen User einen herzliches Dank schön, die hier so engagiert ihre Kenntnisse weitergeben!!!!

FragNet

(Themenstarter)

Anmeldungsdatum:
28. September 2014

Beiträge: 15

Hier noch zwei weitere sed Befehle um unerwünschte Steuerzeichen,Tabulatoren, Leerzeichen am Anfang und Ende einer Zeile und ähnliches zu entfernen

1
sed 's/[\x01-\x1F\x7F]//g' und sed 's/^[ \t]*//;s/[ \t]*$//'

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13177

FragNet schrieb:

1
sed 's/^[ \t]*//;s/[ \t]*$//'

Kleiner Hinweis: ich würde + statt * verwenden, weil dann nur ersetzt wird, wenn eine nicht-leere Zeichenkette erkannt wird. ("*" trifft immer!)

1
sed 's/^[ \t]\+//;s/[ \t]\+$//'

In diesem Fall ist der Unterschied nicht zu bemerken, da man durch einen Leerstring ersetzt. Aber in anderen Fällen oder wenn man mit /p eine Ausgabe erzeugt, macht es einen Unterschied.

Antworten |