ubuntuusers.de

sed: ASCII-Code suchen und ersetzen

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11237

Wohnort: München

michahe schrieb:

OK, aber wie lautet der Befehl, aus der Ascii194.txt eine Ascii195.txt zu erzeugen, in der die 194 Zeichen durch 032-Zeichen (BLANK) ersetzt sind?

Das sind keine 194 Zeichen, das ist der Unicode-Punkt 160 und in UTF-8 wird der mit zwei Bytes dargestellt (mit den Werten 194 und 160).

Man muss dann nur die Ausgabe von sed in eine Datei umleiten:

sed 's/\d194\d160/\d032/' Ascii194.txt > Ascii195.txt 

michahe

(Themenstarter)

Anmeldungsdatum:
12. Dezember 2013

Beiträge: 857

seahawk1986 hat es in einem zeitweise nicht sichtbaren Posting gelöst! Danke seahawk1986!!

... der Befehl, aus der Ascii194.txt eine Ascii195.txt zu erzeugen, in der die 194 Zeichen durch 032-Zeichen (BLANK) ersetzt sind lautet:

... die Ausgabe von sed per Shell/Umleitungen (Abschnitt „Umleiten-der-Ausgabe-mit“) in eine Datei packen

1
sed 's/\d194\d160/\d032/' Ascii194.txt  > Ascii195.txt

ulrichtt

Anmeldungsdatum:
10. November 2011

Beiträge: 40

cat qq.txt | tr $'\xC2' " " > qq2.txt

Wofür steht das "$" nach "tr"?

in der man-page von tr finde ich dazu nichts und in der bash dient das $-Zeichen, um auf den Wert eine Varaiablen zuzugreifen.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13128

ulrichtt schrieb:

cat qq.txt | tr $'\xC2' " " > qq2.txt

Wofür steht das "$" nach "tr"?

in der man-page von tr finde ich dazu nichts und in der bash dient das $-Zeichen, um auf den Wert eine Varaiablen zuzugreifen.

Nein, $'...' ist eine besondere Form der String-Erzeugung.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11237

Wohnort: München

Siehe https://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting - das gehört zum ANSI-C Quoting $'\xC2' wird von der Shell zu einem Zeichen mit dem Hex-Wert 0xC2 bzw. dem Dezimalwert 194 expandiert. Der Wert kann z.B. in mit einem 8-Bit Encoding erstellten Text als einzelnes Zeichen vorkommen (wäre z.B. Â in Windows 1252 bzw. Latin-1), bei Unicode kommt das Byte nicht alleine vor, sondern bildet mit einem nachfolgenden Byte ein durch zwei Bytes kodiertes Zeichen.

ulrichtt

Anmeldungsdatum:
10. November 2011

Beiträge: 40

Dank an rklm und seahawk1986!

Man wird so alt wie eine Kuh und lernt noch immer was dazu,

ulrich (79)

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6467

Wohnort: Hamburg

In vielen Programmen kann man solche UTF-8 codierten Zeichen auch mit der Tastatur eingeben. Dazu drückt man gleichzeitig [Strg]+[Shift] und dann das U.

Dann erscheint ein unterstrichenes u und man kann den Hex Code des Zeichens eingeben. Abgeschlossen wird die Eingabe mit der Leertaste.

Ob sed das akzeptiert habe ich aber nicht ausprobiert. In meinem Mate-Terminal geht das ⚠

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13128

Dakuan schrieb:

In vielen Programmen kann man solche UTF-8 codierten Zeichen auch mit der Tastatur eingeben. Dazu drückt man gleichzeitig [Strg]+[Shift] und dann das U.

Dann erscheint ein unterstrichenes u und man kann den Hex Code des Zeichens eingeben. Abgeschlossen wird die Eingabe mit der Leertaste.

... oder Enter.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6467

Wohnort: Hamburg

... oder Enter.

Ok, kannte ich auch noch nicht. Aber wenn ich jetzt meinen eigenen Beitrag lese:

Dann erscheint ein unterstrichenes u ...

erinnert mich das irgendwie an Mike Krügers Nippel Song. Passt irgendwie immer (auch wenn es OT ist).

Antworten |