[gelöst] Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Patsche
Beiträge: 3262
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

[gelöst] Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von Patsche » 22.07.2017 18:33:56

Hi,

ich bastel gerade wieder an einer html-Seite herum. Diese html-Seite benutzt ganz normale lateinische Schrift. Nun möchte ich diese lateinischen Buchstaben durch Runenzeichen ersetzen. Dafür gibt es spezielle html-codes.

Nun möchte ich beispielsweise die Textdatei runen.txt alle "a" durch "&#5800" ersetzen. Ich habe ein wenig gesucht und dafür das Tool "tr" gefunden. Laut man soll es dann so aussehen:

Code: Alles auswählen

tr a &#5800 < runen.html > runen-runen.html
tr ersetzt alle a's in der Textdatei runen.html durch "&#5800" und schreibt es in die Textdatei runen-runen.html. So die Theorie. Nun ist &#5800 ja kein einzelner Buchstabe und tr macht nicht, was es soll.

Hat jemand einen Rat, wie ich das noch anstellen könnte?
Zuletzt geändert von Patsche am 23.07.2017 21:18:15, insgesamt 1-mal geändert.

Korodny
Beiträge: 720
Registriert: 09.09.2014 18:33:22
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von Korodny » 22.07.2017 18:42:29

Du sprichst mehrfach von "einer" Seite - das erledigt jeder Texteditor für dich ;)

Wenn's vom Terminal aus sein muss, nimmt man normalerweise sed ("stream editor"):

Code: Alles auswählen

sed 's/abc/XYZ/g' <infile >outfile
Das Ampersand sollte man per Backslash entschärfen, also müsste das hier dein Problem lösen:

Code: Alles auswählen

sed 's/a/\&#5800;/g' <runen.html >runen-runen.html

thoerb
Beiträge: 1685
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von thoerb » 22.07.2017 19:08:23

Gibt es dafür keine Schriftart, die du nutzen kannst?

So was hier: https://fonts2u.com/rune.font

Benutzeravatar
Patsche
Beiträge: 3262
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von Patsche » 22.07.2017 19:11:11

Hmmm.....ich habe jetzt ein solches Shellskript gebastelt:

Code: Alles auswählen

sed 's/a/\&#5800;/g' <runen.html >runen-runen.html
sed 's/b/\&#5842;/g' <runen.html >runen-runen.html
sed 's/c/\&#5810;/g' <runen.html >runen-runen.html
sed 's/d/\&#5854;/g' <runen.html >runen-runen.html
sed 's/e/\&#5846;/g' <runen.html >runen-runen.html
sed 's/f/\&#5792;/g' <runen.html >runen-runen.html
sed 's/g/\&#5815;/g' <runen.html >runen-runen.html
sed 's/h/\&#5818;/g' <runen.html >runen-runen.html
sed 's/i/\&#5825;/g' <runen.html >runen-runen.html
sed 's/j/\&#5827;/g' <runen.html >runen-runen.html
#c
sed 's/l/\&#5850/g;' <runen.html >runen-runen.html
sed 's/m/\&#5847/g;' <runen.html >runen-runen.html
sed 's/n/\&#5822/g;' <runen.html >runen-runen.html
sed 's/o/\&#5855/g;' <runen.html >runen-runen.html
sed 's/p/\&#5832/g;' <runen.html >runen-runen.html
sed 's/r/\&#5809/g;' <runen.html >runen-runen.html
sed 's/s/\&#5835/g;' <runen.html >runen-runen.html
sed 's/t/\&#5839/g;' <runen.html >runen-runen.html
#th
sed 's/u/\&#5794/g;' <runen.html >runen-runen.html
sed 's/w/\&#5817/g;' <runen.html >runen-runen.html
sed 's/z/\&#5833/g;' <runen.html >runen-runen.html
Beispielhaft der erste Satz.
Vor dem Umwandeln:

Code: Alles auswählen

Als Runen bezeichnet man die alten Schriftzeichen der Germanen.
Nach dem Umwandeln:

Code: Alles auswählen

Als Runen beᛉeichnet man die alten Schriftᛉeichen der Germanen.
Es wurde anscheinend nur z umgewandelt. Was mache ich falsch?

@thoerb
Ich nutze zur Anzeige im Firefox Debianfonts-junicode. Diese Schriftart enthält mehrer Schriftzeichen unter anderem auch Runen.
Ich dachte allerdings, dass ich trotzdem die lateinischen Buchstaben in Runen-html-Code umwandeln müsse.
http://www.personal.psu.edu/ejp10/blogs ... runes.html

Korodny
Beiträge: 720
Registriert: 09.09.2014 18:33:22
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von Korodny » 22.07.2017 19:26:08

Patsche hat geschrieben: ↑ zum Beitrag ↑
22.07.2017 19:11:11
Es wurde anscheinend nur z umgewandelt. Was mache ich falsch?
Nein, es wurden tatsächlich alle Zeichen umgewandelt - allerdings nimmst du ja in jeder Zeile runen.html - also die ursprüngliche, unveränderte Datei - als Quelle und runen-runen.html als Zieldatei. Du überschreibst also jedes Mal das Ziel mit den bisherigen Änderungen durch eine neue Datei in der nur die letzten Änderungen enthalten sind.

Am einfachsten ist es, du startest sed mit dem -i Parameter: das steht für "In Place" - also ersetzen in der aktuellen Datei, ohne eine neue Zieldatei zu erstellen:

Code: Alles auswählen

sed -i 's/a/\&#5800;/g' runen-backup.html

thoerb
Beiträge: 1685
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von thoerb » 22.07.2017 19:27:47

Patsche hat geschrieben: ↑ zum Beitrag ↑
22.07.2017 19:11:11
@thoerb
Ich nutze zur Anzeige im Firefox Debianfonts-junicode. Diese Schriftart enthält mehrer Schriftzeichen unter anderem auch Runen.
Ich dachte allerdings, dass ich trotzdem die lateinischen Buchstaben in Runen-html-Code umwandeln müsse.
http://www.personal.psu.edu/ejp10/blogs ... runes.html
Ich habe bei mir so was mal über eine CSS-Datei gemacht. Beispiel:

Code: Alles auswählen

@font-face{
    font-family: 'dumbledor';
    src: url('../fonts/dum1.ttf') format('truetype');
}

h1{
    font-family:'dumbledor';
   }

Benutzeravatar
Patsche
Beiträge: 3262
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von Patsche » 22.07.2017 20:08:45

Korodny hat geschrieben: ↑ zum Beitrag ↑
22.07.2017 19:26:08
Am einfachsten ist es, du startest sed mit dem -i Parameter: das steht für "In Place" - also ersetzen in der aktuellen Datei, ohne eine neue Zieldatei zu erstellen:
Das klappt jetzt nun fast ;)

Code: Alles auswählen

Aᛚᛋ Rᚢᚾᛖᚾ ᛒᛖᛉᛖᛁᚲᚺᚾᛖᛏ ᛗᚨᚾ ᛞᛁᛖ ᚨᛚᛏᛖᚾ Sᚲᚺᚱᛁᚠᛏᛉᛖᛁᚲᚺᛖᚾ ᛞᛖᚱ Gᛖᚱᛗᚨᚾᛖᚾ.
Jetzt soll sed das noch egal sein, ob das A groß, oder klein geschrieben wurde. Natürlich könnte ich das Skript auch nochmal mit großen Buchstaben eingefügt werden.
thoerb hat geschrieben: ↑ zum Beitrag ↑
22.07.2017 19:27:47
Ich habe bei mir so was mal über eine CSS-Datei gemacht. Beispiel:
Stimmt. So klappt es auch. Was ist nun besser?

owl102

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von owl102 » 22.07.2017 22:39:59

Patsche hat geschrieben: ↑ zum Beitrag ↑
22.07.2017 20:08:45
Jetzt soll sed das noch egal sein, ob das A groß, oder klein geschrieben wurde.
Dann sag' das doch einfach sed:

Code: Alles auswählen

sed 's/[Aa]/\&#5800;/g' ...
sed 's/[Bb]/\&#5842;/g' ...
...
Hint: sed kann regiäre Ausdrücke.

debianoli
Beiträge: 4152
Registriert: 07.11.2007 13:58:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von debianoli » 22.07.2017 22:42:11

CSS

Damit bleibt deine Seite barrierefrei, wird richtig von Suchmaschinen indiziert, sieht überall gleich aus und Inhalte lassen sich leichter ändern und neu erstellen

thoerb
Beiträge: 1685
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von thoerb » 23.07.2017 01:35:48

debianoli hat geschrieben: ↑ zum Beitrag ↑
22.07.2017 22:42:11
CSS
Damit bleibt deine Seite barrierefrei, wird richtig von Suchmaschinen indiziert, sieht überall gleich aus und Inhalte lassen sich leichter ändern und neu erstellen
+1

Ändere mal nachträglich einen Text der nur aus HTML-Entitäten besteht. Viel Spaß :THX:

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von eggy » 23.07.2017 09:48:18

Noch nen Grund für CSS: Deine Links gehen nicht kaputt, sed ist es egal, ob das "a" im Text auftaucht oder in nem "<a href=...>" steht.

Benutzeravatar
Patsche
Beiträge: 3262
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Buchstaben in einer Textdatei suchen, finden und durch Zeichenkette ersetzen

Beitrag von Patsche » 23.07.2017 21:17:46

Super. Vielen Dank euch allen. Werde es jetzt per CSS machen. :THX:

Antworten