[erledigt] whitespaces ersetzen die keine whitespaces sind

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

[erledigt] whitespaces ersetzen die keine whitespaces sind

Beitrag von mino23 » 25.08.2022 12:25:04

Ich habe mit pdftotext ein pdf konvertiert. Das hat mehr oder weniger geklappt. Was überhaupt nicht funktioniert hat ist die Silbentrennung.

So sieht es im pdf aus:

<code>dies ist eine Test-$
zeile und das ist eine$
weitere Testzeile mit Silben-$
trennung.</code>

So sieht es in der Textdatei aus:

<code>dies ist eine Test $
zeile und das ist eine$
weitere Testzeile mit Silben $
trennung.</code>

Es fehlt der Trennungsstrich, dafür steht dort ein whitespace, der aber kein whitespace ist. Die Fläche ist einfach leer.

Ich habe das mit diesem Befehl getestet:

<code>sed 's/\(.*\) /\1@/'</code>

Hierbei wird das letzte whitespace einer Zeile durch ein @ ersetzt. Das sieht im Ergebnis so aus:

<code>dies ist eine@Test $
zeile und das ist@eine$
weitere Testzeile mit@Silben $
trennung.</code>

Die Zeilenumbrüche $ kann ich mit sed, tr oder awk beliebig manipulieren, aber nicht das "whitespace" davor.

Wenn ich gvim aufrufe und versuche die "whitespaces" die keine whitespaces sind, durch einen Trennstrich - zu ersetzen, dann klappt das. Ich markiere eines dieser "whitespace" mit der Maus und ersetze anschließend in der gesamten Textdatei diese "whitespaces" durch den Trennstrich. Gvim hat dafür extra ein Menü mit Auswahloptionen. Die echten whitespaces bleiben dabei unangetastet.

Ich möchte das Ersetzen automatisieren. Wie mache ich das?
Zuletzt geändert von mino23 am 31.08.2022 14:58:10, insgesamt 1-mal geändert.

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: whitespaces ersetzen die keine whitespaces sind

Beitrag von reox » 25.08.2022 17:10:54

Du müsstest mal mit einem hexeditor schauen welches Zeichen da steht. Vermutlich ist es 0xA0 (non-breaking space) oder 0xAD (soft hyphen).
Wenn du weißt was pdftotext da hinschreibt, sollte es ein einfaches sein, dass mit sed zu ersetzen.

mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

Re: whitespaces ersetzen die keine whitespaces sind

Beitrag von mino23 » 31.08.2022 14:57:16

0xAD war es in meinem Fall, dazu noch zwei andere unentdeckte.

Mit der hex Anzeige des vim bin ich nicht klar gekommen. Ich habe mir daher die betreffende Datei mit

Code: Alles auswählen

grep --color='auto' -P -n "[^[:ascii:]]"
aufgerufen. Das zeigt mir alle Zeichen außerhalb des ASCII Bereichs in rot an. Leider auch die deutschen Umlaute. Danach bin ich die Zeichen mit sed angegangen, wobei ich das Zeichen mit der Maus markierte und anschließend händisch in die sed Zeile kopiert habe.

Ursprünglich wollte ich die pdf Datei mit pdf2htmlex und nicht mit pdftotext konvertieren. Leider wird das Programm nicht mehr gepflegt und wird nicht mehr für Debian angeboten. Ansonsten gäbe es noch PDFBox. Auf meinem System hätte ich mir dafür rund 700 MB zusätzlich an Software installieren müssen. Was es kann weiß ich nicht. Die Quellen dazu sind rar. pdf2htmlex hingegen wird gelobt. Im Vergleich zu pdftotext ist es wohl ein Unterschied wie der einer Axt zu einer Motorsäge.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: whitespaces ersetzen die keine whitespaces sind

Beitrag von Meillo » 31.08.2022 15:03:03

Danke fuer den ausfuehrlichen Bericht. :THX:
mino23 hat geschrieben: ↑ zum Beitrag ↑
31.08.2022 14:57:16
Ich habe mir daher die betreffende Datei mit

Code: Alles auswählen

grep --color='auto' -P -n "[^[:ascii:]]"
aufgerufen. Das zeigt mir alle Zeichen außerhalb des ASCII Bereichs in rot an. Leider auch die deutschen Umlaute.
Du haettest die Umlaute einfach zwischen die zwei schliessenden eckigen Klammern schreiben koennen, dann waeren sie auch ignoriert worden:

Code: Alles auswählen

grep --color='auto' -P -n "[^[:ascii:]ÄÖÜäöüß]"
Use ed once in a while!

mino23
Beiträge: 64
Registriert: 15.07.2019 18:49:51

Re: [erledigt] whitespaces ersetzen die keine whitespaces sind

Beitrag von mino23 » 02.09.2022 19:41:29

@Meillo, danke. Habe ich mir für den nächsten Einsatz gemerkt.

Antworten