geli27 Geschrieben 11. Oktober 2004 Teilen Geschrieben 11. Oktober 2004 Hallo, ich habe hier einen Haufen Textdateien, die folgenden Aufbau haben: object 19 startdate=20011106 starttime=1430 endtime=1600 lank=1 reserve=1 level=0 event=plah detail=plah repeat=4 repeatlimit=1 entry=36 outflg=1 place=607 object dates _item=20011106 _item=20011120 _item=20011204 end end object 20 startdate=20011204 usw. Die Daten stehen auch so untereinander. Bei object fängt jeweils ein neuer Datensatz an. Diese Datensätze sollen in eine "richtige" Datenbank überführt werden. Dazu würde es schon reichen, wenn ich die die Felder eines Datensatzes in einer Zeile stehen hätte. Wie kann ich sowas auslesen und jeweils die Datensätze in eine eigene Zeile schreiben? Als Scriptsprachen stehen mir Shell und Python zur Verfügung. geli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 13. Oktober 2004 Teilen Geschrieben 13. Oktober 2004 Ich versteh noch net ganz. Da sind Objekte in Objekten enthalten. Wie stellst du dir das dann vor? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mOSSpOWER Geschrieben 16. Oktober 2004 Teilen Geschrieben 16. Oktober 2004 Wenn Du mir näher beschreiben könntest, was Du GANZ GENAU möchtest, könnte ich Dir ein Java Programm posten, was diese Kleinigkeit erledigen würde. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 17. Oktober 2004 Teilen Geschrieben 17. Oktober 2004 So als Ansatz (Linux/bash)... #!/bin/sh function getValue() { VALUE=`echo $LINE | sed -e 's/^[^=]*=\(.*\)$/\1/'` } function isObject() { echo $LINE | egrep '^object\ .*$' > /dev/null } function endObject() { echo $LINE | egrep '^end$' > /dev/null } cat test.txt | ( LEVEL=0 OLINE=0 while read LINE do # Check: Object starts (object XYZ) # LEVEL erhoehen, Klammer oeffnen isObject && LEVEL=`expr $LEVEL + 1` && OLINE=1 && RESULT="${RESULT}(" # Check: Object ends (end) # LEVEL verringern, Klammer schliessen endObject && OLINE=1 && RESULT=`echo $RESULT | sed -e 's/^\(.*\),$/\1/'` && RESULT=`echo "${RESULT})"` && LEVEL=`expr $LEVEL - 1` # Value holen wenn es weder Object start noch end line war test $OLINE == 0 && getValue && RESULT="${RESULT}${VALUE}," # Wenn der Level 0 erreicht, ausdrucken und RESULT resetten test $LEVEL == 0 && echo $RESULT && unset RESULT # Object line tag resetten OLINE=0 done ) # sh parse.sh (20011106,1430,1600,1,1,0,plah,plah,4,1,36,1,607,(20011106,20011120,20011204)) (20011204) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.