Datei durchsuchen und in verschiedene teile abspeichern

C

candyman

Grünschnabel
Tach...

Ich suche eine Möglichkeit in der Shell bzw in einem Script eine Datei nach einem bestimmten Ausdruck zu durchsuchen und das dann das Ergebnis in eine Separate Datei abzuspeichern.

Code:
<ausdruck>
1irgend was,....
1bla
1blajgfsgopws
</ausdruck>

<ausdruck>
2irgend was,....
2bla
2blajgfsgopws
</ausdruck>

<ausdruck>
3irgend was,....
3bla
3blajgfsgopws
</ausdruck>

Jetzt möchte ich halt 3 Dateien haben in der 1. steht das
Code:
<ausdruck>
1irgend was,....
1bla
1blajgfsgopws
</ausdruck>

usw.
Hab mir schon SED überlegt, nur weiß ich nicht so richtig wie das bei mehreren Ausdrücken dann aussehen muß...

gruß
candyman
 
Hm, und wie sollen neuen Dateien dann heißen? Hier mal ein Beispiel, erstellt aus foo die Dateien foo1 - foo3: (in perl allerdings)
Code:
$ cat foo
<ausdruck>
1irgend was,....
1bla
1blajgfsgopws
</ausdruck>

<ausdruck>
2irgend was,....
2bla
2blajgfsgopws
</ausdruck>

<ausdruck>
3irgend was,....
3bla
3blajgfsgopws
</ausdruck>
$ perl -nle 'BEGIN {undef $/}; my $i=1; for (m{(<ausdruck>.*?</ausdruck>)}gs) {open my $fh,">","foo$i"; print $fh $_; close $fh; $i++}' foo
$ cat foo1
<ausdruck>
1irgend was,....
1bla
1blajgfsgopws
</ausdruck>
$ cat foo2 
<ausdruck>
2irgend was,....
2bla
2blajgfsgopws
</ausdruck>
$ cat foo3 
<ausdruck>
3irgend was,....
3bla
3blajgfsgopws
</ausdruck>

Ansonsten, du kannst in sed mit Adressen arbeiten. Ich weiß nur nicht, ob man explizit sagen kann "beim zweiten Auftreten von Adresse /foo/" oder so.
Code:
$ sed -n '/<ausdruck>/,/<\/ausdruck>/p' foo
<ausdruck>
1irgend was,....
1bla
1blajgfsgopws
</ausdruck>
<ausdruck>
2irgend was,....
2bla
2blajgfsgopws
</ausdruck>
<ausdruck>
3irgend was,....
3bla
3blajgfsgopws
</ausdruck>
Hm, kA ehrlich gesagt.
 
Du suchst

Code:
csplit <datei> /ausdruck/ {*}
 
supi...

genau das hab ich gesucht....
vielen dank.. man lernt ja nie aus....

gruß und nen schönen sonntag noch
candyman
 
Wie viele geile CLI-Tools gibt es eigentlich, die ich noch nicht kenne...
 
Marcellus, die Basics habe ich sicherlich schon aber mit nur 928 Möglichkeiten wäre ich ja noch zufrieden, ich werde sicher nicht alle 3510 bei mir ausprobieren...
 
die 3510 sind nehm ich an auch haufenweise gui behaftete Befehle, deswegen hab ich ja auf meinem rechner ohne x nachgeschaut. Trotzdem ist der Aufwand unverhältnismäßig hoch. Den großteil der cli tools, die praktisch sind, aber von denen es haufenweise gibt kann man durch sed, perl oder *sh ersetzen. Ich glaube wenn man sich auf eins dieser drei allround tools beschränkt ist man weit effizienter unterwegs.
 
Meine X-freie Maschine hat immer noch über 2000 mögliche Befehle, und das noch nichtmal als root..
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

3 letzte Zeile löschen oder ab Zeile 55 Muster suchen und löschen

Shell Skript zum automatischen Aufräumen von doppelten Ordnern

Spezielle Zeile & die 2 Zeilen davor auslesen

awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

Zurück
Oben