sed in awk-Arrays

J

JCB

Mitglied
Hallo,

ich habe leider keine Lösung für mein Problem gefunden: Ich bekomme eine Textdatei(Feste Feldlänge!! die ich kenne) in dieser Textdatei sind Umlaute vom Erstellungsprogramm zerschossen worden. Nun habe ich folgenden Plan:
Code:
awk 'BEGIN{FIELDWIDTHS="2 9 90 90 1 64 64 30 30 20 6 3 3 4 3 9 1 32 30 30 30 20 6 3 3 4 3 9 1 16 5 4 16 16 16 60 60 41 4 4 4 4 4 4 8 3 4 18 1 15 4 7 1 7 1 1 1 3 1 1 1 2 9 8 2 9 90 64 30 30 20 6 3 4 3 9 1 2 9 90 64 30 30 6 3 4 9 1 2 9 90 64 30 30 20 6 3 4 3 9 1 5 9 2 8 16"};{ ++array[$0] } END { for(x in array) print(sed -f script.sed word[x])}' testfixed.txt

Also testfixed.txt ist die Datei die es zu Bearbeiten gilt. script.sed ist das Script welches die Übersetzungen vornimmt. Dies arbeitet auch super, wenn man es allein auf die Datei loslässt. Leider aber nicht mit dem gewünschten Ergebnis. Das zeichen welches z.B ein "ü" darstellen soll ist ein "ö", wenn ich also einfach sed werkeln lasse verkürzt sich der String und meine Festen Feldlängen sind im Eimer.

Fraglich ist aber hier auch noch, selbst wenn ich (mit eurer geneigten Hilfe) dieses Script so Laufen lasse, awk auch die Feldlänge in Original wieder zurückschreibt??

Ich bin für alles offen, denn sonst bleibt mir morgen nur noch der Weg:
FixedLength >> Mysql >> CSV >> sed >> Mysql >>FixedLength :(

Bin für jeden Tipp dankbar,

JCB
 
Warum nimmst du nicht einfach recode?
Dir sind doch sicher der Eingabezeichensatz und der Ausgabezeichensatz bekannt.

Gruß Wolfgang
PS Was in deinem sed-script steht, kann keiner hier erahnen.
 
Hallo Wolfgang,

danke für deine Antwort. Recode kann hier glaub ich nicht helfen, da diese "Missumlaute" nicht immer auftreten, sondern nur in einigen Datensätzen. In den anderen wird äüö richtig dagestellt. Mein sed Script:
Code:
root@KanoServer:# cat script.sed
s/ö/ö/g
s/ü/ü/g
s/ä/ä/g
w scriptergebnis.txt
root@KanoServer:#

Recode macht meines erachten nur eine umcodierung in verschiedene Zeichensätze. Das ist hier aber nicht das Ziel.

Sollte der Code von oben grundsätzlich funktionieren, oder hab ich da noch n Schnitzer drin?

Gruß und Danke,

JCB
 
Hallo

Dein Problem ist nicht sed, sondern offensichtlich wird die Feldlänge falsch übergeben.
Sprich ö wird als zwei Zeichen gewertet.
Wenn dem so ist, hast du ein ordendliches Zeichencode Problem.
Deshalb habe ich auch recode empfohlen.
Ich sehe hier im Moment keine andere Lösung, als dem Ausgabeprogramm den richtigen Zeichencode bezubringen. Wenigstens sollten verschiedene Zeichencodierungen nicht in einer Datei landen.
Natürlich bin ich nicht der Guru, aber solche Probleme mit vermischten Zeichensätzen innerhalb einer Datei sind mit sed für mich unlösbar.

Gruß Wolfgang
 
Hallo Wolfgang,

ok, dir glaub ich das. Dann wohl doch mit M$ Access. So lange der Fehler noch anhält.

Danke für deine Mühe,

Jens
 

Ähnliche Themen

Slimbook Kymera Ventus Black: Linux-Gaming-System mit Zen-4-CPUs und RDNA-3-GPUs

OpenMandriva Lx 4.2 („Argon“): Linux-Distribution mit Kernel 5.10.14 und KDE Plasma 5.20.5

E/A-Fehler (.snapshots is not a btrfs subvolume).

Keine grafische Oberfläche (Debian Installation)

Spalten einer Datei in neue Datei integrieren.

Zurück
Oben