W
Willy538
Grünschnabel
hallo Leute,
Ich hab mit Linux nicht so viel Erfahrung, aber ich kenne die Grundlagen, sed grep, reguläre Ausdrücke usw.. Hier mein Problem:
Ich hab ne xml Datei mit folgendem aufbau:
Ich will immer eine bestimmte Anzahl der äußersten Objekte in eine eigene Datei kopieren. Normalerweise wär das kein Problem, ich würd es einfach mit php z.b. simpleXML machen. Aber meine Datei ist 1.3 GB groß - das sprengt meine sämtlichen RAM Vorräte.
Hier ist mein Plan:
Schritt 1: Alle "\n" löschen
Das hab ich schon nicht hinbekommen. Meine Versuche:
1. sed /\n//g datei.xml (hat nicht funktioert)
2. tr '\n' '' < datei.xml > out.xml (hat auch nicht funktioert)
3. tr '\n' ' ' < datei.xml > out.xml (alle \n durch Leer ersetzen)(hat funktioniert)
sed / //g (alle leer löschen)(hat nicht funktioert)
Schritt 2:Mit sed Alle "<object id="IDdesÄußerstenObjects">" durch "\n<object id="IDdesÄußerstenObjects">" ersetzen
Das hab ich noch nicht ausprobiert (denke aber, dass das nicht so schwer sein sollte)
Schritt 3: Jede Zeile (oder immer 2 bzw. 3 usw.) in eine eigene Datei kopieren
Ich hab keine Ahnung wie das geht, aber ich denke, dass es auf jeden Fall möglich ist (oder?)
Schritt 4: Den Anfang jeder in schritt 3 erzeugen Datei durch <export> ersetzen, das Ende durch </export>
Das ist also mein Plan, was haltet ihr davon? zu umständlich, gehts auch einfacher? oder ganz andere Vorschläge?
Wenn mein Plan halbwegs durchführbar ist, wie genau sind die einzelnen Schritte umzusetzen?
mfg Willy
Ich hab mit Linux nicht so viel Erfahrung, aber ich kenne die Grundlagen, sed grep, reguläre Ausdrücke usw.. Hier mein Problem:
Ich hab ne xml Datei mit folgendem aufbau:
Code:
<export>
<object id="IDdesÄußerstenObjects">
...
...
<object>
...
...
</object>
<object>
...
...
</object>
...
...
</object>
<object id="IDdesÄußerstenObjects">
...
...
<object>
...
...
</object>
<object>
...
...
</object>
...
...
</object>
...
</export>
Ich will immer eine bestimmte Anzahl der äußersten Objekte in eine eigene Datei kopieren. Normalerweise wär das kein Problem, ich würd es einfach mit php z.b. simpleXML machen. Aber meine Datei ist 1.3 GB groß - das sprengt meine sämtlichen RAM Vorräte.
Hier ist mein Plan:
Schritt 1: Alle "\n" löschen
Das hab ich schon nicht hinbekommen. Meine Versuche:
1. sed /\n//g datei.xml (hat nicht funktioert)
2. tr '\n' '' < datei.xml > out.xml (hat auch nicht funktioert)
3. tr '\n' ' ' < datei.xml > out.xml (alle \n durch Leer ersetzen)(hat funktioniert)
sed / //g (alle leer löschen)(hat nicht funktioert)
Schritt 2:Mit sed Alle "<object id="IDdesÄußerstenObjects">" durch "\n<object id="IDdesÄußerstenObjects">" ersetzen
Das hab ich noch nicht ausprobiert (denke aber, dass das nicht so schwer sein sollte)
Schritt 3: Jede Zeile (oder immer 2 bzw. 3 usw.) in eine eigene Datei kopieren
Ich hab keine Ahnung wie das geht, aber ich denke, dass es auf jeden Fall möglich ist (oder?)
Schritt 4: Den Anfang jeder in schritt 3 erzeugen Datei durch <export> ersetzen, das Ende durch </export>
Das ist also mein Plan, was haltet ihr davon? zu umständlich, gehts auch einfacher? oder ganz andere Vorschläge?
Wenn mein Plan halbwegs durchführbar ist, wie genau sind die einzelnen Schritte umzusetzen?
mfg Willy