GELÖST UTF8-Dateien + SED (UnxUtils) + Umlaute = bä

Diskutiere UTF8-Dateien + SED (UnxUtils) + Umlaute = bä im Programmierung Forum im Bereich Software Forum; Hallo liebe Community, ich möchte in meheren XML-Dateien, die im UFT8-Format (ohne Byte Order Mark) vorliegen, unter Windows XP SP2 bestimmte...
D

Dobias

Threadstarter
Mitglied seit
26.01.2009
Beiträge
28
Hallo liebe Community,

ich möchte in meheren XML-Dateien, die im UFT8-Format (ohne Byte Order Mark) vorliegen, unter Windows XP SP2 bestimmte Strings durch andere ersetzen.
Bisher versuche ich es mit einer Batch-Datei, die SED aus den UnixUtils benutzt, versucht.
Eine Zeile aus der Datei sieht z.B. so aus:
Code:
for /F %%i IN ('dir /b /s /A:-D D:\test\*.*') do sed -i "s/946753/14623348876/g" %%i
Bei den Zahlen funktioniert es wunderbar, aber bei Namen, in denen Umlaute vorkommen, habe ich Probleme. Ich habe die Batchdatei auch schon mal mit (Notepad++) in UTF-8 geschrieben (um im Rohformat dann die gleichen Char-Werte zu haben) oder direkt mit edit.com ueberarbeitet, damit die Umlaute in der Eingabeaufforderung richtig aussehen. Entweder sind die Umlaute, die beim Ersetzen eingefügt wurden, fehlerhaft oder es werden manche der Strings, die ersetzt werden sollen, nicht erkannt. Auch Codepage 437 hat nicht geholfen.

Wie komme ich weiter?
Oder gibt es vielleicht sogar einen einfachereren Weg, und ich renne nur schon seit heute morgen kontinuierlich gegen eine Wand? -.-

Vielen Dank im Voraus
Dobiasd
 
DiableNoir

DiableNoir

Mitglied seit
18.01.2004
Beiträge
6.069
Also Batch-Dateien arbeiten leider nun mal mit ANSI-Code. Das heißt, die Daten landen dann sicher nicht in der richtigen Codierung in den XML-Dateien. Das mit Notepad++ wäre schon eine gute Idee, aber es gäbe ja noch eine andere Möglichkeit: Du kannst die gesamte Aufgabe mit Notepad++ lösen.

Lade dazu einfach alle XML-Dateien in den Editor und gib dann normal den zu suchenden und den zu ersetzenden Wert ein. Mit der Schaltfläche "Auf alle offenen Dateien anwenden" kannst du dann diese Aktion für alle geöffneten XML-Dateien durchführen.

Noch besser geht es in UltraEdit...das kann Suchen/Ersetzen für ein ganzes Verzeichnis durchführen.
 
D

Dobias

Threadstarter
Mitglied seit
26.01.2009
Beiträge
28
Danke für den Tip, aber ich hätte wohl noch dazuschreiben sollen, dass ich auf den Rechner nur Zufriff über ISDN mit zwei kaskadierten VNCs habe. -_-
Von daher ist eintippen (oder reinkopieren) in ein Such-Ersetz-Programm keine gute Lösung, weils ewig dauern würde und mir da sicher auch irgendwo ein Tippfehler unterläuft. Und Notepad++ über ein VB-Script füttern ist vielleicht auch nicht gerade das schönste. ;)
Von daher wär irgendwas scriptmäßiges schon gut, aber ich befürchte, ich muss die Cpp-Keule auspacken ...
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.053
Wenn man die cmd.exe mit dem Parammeter /u aufruft, wird laut Hilfe eine Unicode-Ausgabe erzeugt. Prorbier das doch bitte mal.
 
D

Dobias

Threadstarter
Mitglied seit
26.01.2009
Beiträge
28
Klappt leider auch nicht. Da passiert anscheinend das gleiche, wie wenn ich mit chcp 65001 die Codepage auf Unicode umstelle. Zuerst führt er gar nichts aus, weil der meine For-Schleife mit dem dir irgendwie nicht mag, und wenn ich dann einen der sed-Befehle manuel ausführe werden mir die Umlaute leider auch wieder zerschossen.
Nützlich wär wahrscheinlich zu wissen, warum es mit der normalen Methode nicht klappt. Also Batchdatei direkt in Unicode schreiben und dann ausführen. Die einzigen Unicodezeichen sind dann ja in den Anführungsstrichen der Parameter für sed und zwar mit den gleichen Bytewerten, wie sie auch wirklich in der Datei stehen. Wandelt Billies dusselige Kommandozeile etwa diese für sie unhübschen Sonderzeichen um bevor sie sie an sed weitergibt? Oder meint sed, dass ich solche Zeichen ja gar nicht gemeint haben könnte und ersetzt sie deshalb durch was anderes? Das, was nämlich dann dabei rauskommt, ist weder in Unicode noch in Ansi irgendwie sinnvoll. :wacko
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.053
Schade.

Ein Knackpunkt könnte natürlich auch der sed sein.
sed stammt ja aus der Unix-Steinzeit, und die Frage ist, wie weit dir von Dir verwendete Version auf moderne Zeichensätze aktualisiert wurde.
Obwohl dem das ja bei der Verwendung von Ziffern bzw. Oktalzahlen egal sein sollte.
 
D

Dobias

Threadstarter
Mitglied seit
26.01.2009
Beiträge
28
Sed soll sich ja eigentlich gar nicht um den Zeichensatz kümmern, sondern nur ganz normale byteweise mit dem, was ich ihm übergebe, arbeiten.
Gibts vielleicht irgendne möglichkeit, Hex-Werte in regulären Ausdrücken zu verwenden?
 
automatthias

automatthias

vernunftgeplagt
Mitglied seit
21.04.2006
Beiträge
8.053
Gibts vielleicht irgendne möglichkeit, Hex-Werte in regulären Ausdrücken zu verwenden?
Radio eriwan antwortet: Im Prinzip ja.

Auch hier hängt es stark von der Version des sed ab, ob der das kann und verarbeitet.

Der aktuelle GNU-sed soll angeblich mit Unicode klar kommen.
Hättest Du evtl. die Möglichkeit, auf dem Zielsystem in einer cygwin-Umgebung zu arbeiten?
 
D

Dobias

Threadstarter
Mitglied seit
26.01.2009
Beiträge
28
Leider nicht, weil ich das extra installieren müsste.
Google spuckt zwar zu "cygwin portable" etwas aus, aber das, was ich da finde, bekomme ich leider auch nicht ohne installation gestartet.

edit: ich probiere gerade mit iconv herum.
Seltsamerweise bringt der Befehl
Code:
echo "a ä - s ß" | iconv -f iso-8859-1 -t utf-8 > test.txt
keine Datei hervor, die in UTF-8 (oder irgendeinem anderen NP++ bekannten Encoding) sinn macht.
Vielleicht komm ich der Sache so auf die Spur. Irgendeine Idee, warum meine iconv-Zeile nicht funktioniert?
 
D

Dobias

Threadstarter
Mitglied seit
26.01.2009
Beiträge
28
Ha, hab die Sau! :D

Hab die Batchdatei in normalem Ansi geschrieben und die Umlaute einfach für sed mit den Hex-Werten der UTF-8-Codes escaped.

Also statt
Code:
for /F %%i IN ('dir /b /s /A:-D D:\test\*.*') do sed -i "s/Wäh/Hurß/g" %%i
schreib ich
Code:
for /F %%i IN ('dir /b /s /A:-D D:\test\*.*') do sed -i "s/W\xc3\x9h/Hur\xc3\x9/g" %%i
Vielen Dank für die Unterstützung. :up
 
Thema:

UTF8-Dateien + SED (UnxUtils) + Umlaute = bä

Sucheingaben

cygwin: umlaute in Dateien

,

sed unicode verarbeiten

,

sed dateinamen umlaute

,
sed umlaute richtig ausgeben
, sed umlaute, linux dateien umlaute ersetzen.sed, sed umlaute ersetzen, linux shell script umlaute ersetzen utf8, sed utf8 windows, cygwin sed deutsche umlaute, cygwin shell keine umlaute, sed windows utf8, Linux Umlaut-Ersetzung mit sed

UTF8-Dateien + SED (UnxUtils) + Umlaute = bä - Ähnliche Themen

  • Dateien vom Windows PC auf Amazon Fire TV übertragen mit adbLink - So einfach geht es!

    Dateien vom Windows PC auf Amazon Fire TV übertragen mit adbLink - So einfach geht es!: So mancher hat Schwierigkeiten Files vom Windows PC auf Fire TV Geräte zu senden, aber zum Glück gibt es diverse Programme die einem diese Arbeit...
  • Dateien von Hauptfestplatte auf externe Festplatte übertragen schlägt fehl?!

    Dateien von Hauptfestplatte auf externe Festplatte übertragen schlägt fehl?!: Hallo, mein aktuelles Problem: Ich versuche einen Ordner mit 110 GB von meiner Hauptfestplatte auf eine externe Festplatte (E:) zu übertragen...
  • Kontakte von Outlook 2007 nach Outlook Office 36 mit einer .csv Datei

    Kontakte von Outlook 2007 nach Outlook Office 36 mit einer .csv Datei: Problem: 1. in outlook 2007 heißt ein Feldkontakt "Telefon privat" , in Outlook Office 365 heißt der Feldkontakt "Telefon (privat)" (also in...
  • Fehler - Virus gefunden / Wie kann ich diese Datei trotzdem runterladen?

    Fehler - Virus gefunden / Wie kann ich diese Datei trotzdem runterladen?: Hallo liebe Community! Ich bekommen beim runterladen einer Datei diese Meldung "Fehler - Virus gefunden". Nach meinen Recherchen löscht mein...
  • Tschechische Sonderzeichen in UTF8-kodierter CSV-Datei

    Tschechische Sonderzeichen in UTF8-kodierter CSV-Datei: Liebe Community, ich habe eine Excel-Tabelle mit tschechischem Content, die ich als UTF8-kodierte CSV-Datei abspeichern möchte, um sie in eine...
  • Ähnliche Themen

    Oben