"Sortieren" von Textdatei und Filtern - Grep?
Hallo Liste Ich habe folgendes Problem, mir liegt ein Export einer DB vor. Dieser ist wie folgt aufgebaut: "<TEXT1>";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"<Text2>";"";"";"";;;"";"";"";"" ich muss den Text1 als Dateinamen bekommen mit dem einzigen Inhalt Text2. Das jeweils für jede Zeile. (Alle Satzzeichen ; und " sollen raus gefiltert werden. Ich bin mir sicher, dass dies irgendwie unter Linux realisierbar sein muss. Allerdings lag mir Scripten bisher nicht wirklich und ich bekomme keine Idee wie ich das schaffen soll. Hier nochmal die Zeile so wie sie mir vorliegen: "C00007/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";"" "C00008/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";"" Bin sehr Dankbar für jeden Vorschlag! Ciao Felix -- Lassen Sie Ihren Gedanken freien Lauf... z.B. per FreeSMS GMX bietet bis zu 100 FreeSMS/Monat: http://www.gmx.net/de/go/mail
Am Mittwoch, 9. Februar 2005 09:20 schrieb Felix Jaussi:
Hallo Liste
Ich habe folgendes Problem, mir liegt ein Export einer DB vor. Dieser ist wie folgt aufgebaut:
"<TEXT1>";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";""; "";"";"<Text2>";"";"";"";;;"";"";"";""
ich muss den Text1 als Dateinamen bekommen mit dem einzigen Inhalt Text2. Das jeweils für jede Zeile. (Alle Satzzeichen ; und " sollen raus gefiltert werden.
Ich bin mir sicher, dass dies irgendwie unter Linux realisierbar sein muss. Allerdings lag mir Scripten bisher nicht wirklich und ich bekomme keine Idee wie ich das schaffen soll.
Hier nochmal die Zeile so wie sie mir vorliegen:
"C00007/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";" ";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttb l{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";""
"C00008/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";" ";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttb l{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";""
Bin sehr Dankbar für jeden Vorschlag!
Hallo Felix, sieh dir mal die man-Seiten von sed, cut und bash an. Gruß, Wolfgang
Felix Jaussi wrote:
Ich habe folgendes Problem, mir liegt ein Export einer DB vor. Dieser ist wie folgt aufgebaut:
"<TEXT1>";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"<Text2>";"";"";"";;;"";"";"";""
ich muss den Text1 als Dateinamen bekommen mit dem einzigen Inhalt Text2. Das jeweils für jede Zeile. (Alle Satzzeichen ; und " sollen raus gefiltert werden.
Ich bin mir sicher, dass dies irgendwie unter Linux realisierbar sein muss. Allerdings lag mir Scripten bisher nicht wirklich und ich bekomme keine Idee wie ich das schaffen soll.
Hier nochmal die Zeile so wie sie mir vorliegen:
"C00007/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";""
"C00008/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";""
Bin sehr Dankbar für jeden Vorschlag!
Um ein bisschen programmieren wirst du nicht rumkommen. Mein Ansatz (habe es nicht versucht) in Shell das File lesen. Bin kein Experte in IO Operationen in Shell habe beim schnellen suchen http://www.experts-exchange.com/Programming/Programming_Platforms/Q_20773713... gefunden. Jede Zeile durch 2 cut statements mit ; Separator schicken um TEXT1 und TEXT2 rauszubekommen und echo $TEXT2 > $TEXT1 sollte den Rest tun. BTW: Andere werden dir raten Perl zu verwenden, ich habe Perl selbst noch nie benutzt. BTW2: Mit "C00007/03" (und anderen Spezialzeichen) als Filenamen würde ich aufpassen! BTW3: Es stellt sich wie immer die Quotingfrage und ob im TEXT2 nicht der Separator vorkommen kann, cut ist ziemlich brute-force was das trennen betrifft. HTH Claus
Hallo, Am Wed, 09 Feb 2005, Felix Jaussi schrieb:
Ich habe folgendes Problem, mir liegt ein Export einer DB vor. Dieser ist wie folgt aufgebaut:
"<TEXT1>";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"<Text2>";"";"";"";;;"";"";"";""
ich muss den Text1 als Dateinamen bekommen mit dem einzigen Inhalt Text2. Das jeweils für jede Zeile. (Alle Satzzeichen ; und " sollen raus gefiltert werden. [..] Hier nochmal die Zeile so wie sie mir vorliegen:
"C00007/03";;"";;;"";"";"";"";"";"";"";"";"";"";"";;;"";"";"";"";"{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}\viewkind4\uc1\pard\fs23\par }";"";"";"";;;"";"";"";""
Das geht wegen dem / im "Dateinamen" nicht. ==== #!/usr/bin/gawk -f BEGIN { FS=";"; } { $0 = gensub(/;"([^"]*);([^"]*)";/, ";\\1\0\\2;","g",$0); f=gensub(/"([^"]+)"/,"\\1",0,$1); f=gensub("/","_","g",f); print gensub("\0",";","g",$23) >f; } ==== Ausserdem gehe ich davon aus, dass in Text2 kein ASCII 0 ('\0') vorkommen darf. Abspeichern, ausfuehrbar machen und per stdin mit den Daten fuettern oder die Datendatei angeben. HTH, -dnh -- Gentile or Jew O you who turn the wheel and look to windward, Consider Phlebas, who was once handsome and tall as you. -- T. S. Eliot, `The Wasted Land', IV
participants (4)
-
claus
-
David Haller
-
Felix Jaussi
-
Wolfgang Hinsch