mrt181
09-02-2009, 09:52
Hallo,
ich möchte einen String der in jeder Zeile einer Datei vorkommt nur an einer bestimmte Stelle in der Zeile abgreifen und die Zeilen dann in einzelne Dateien schreiben:
Beispiel Datei:
TESTTESTTEST#000#12345000000101 2009-01-01
TESTTESTTEST#000#12101000000101 2009-01-01
Mein Ansatz:
for i in {101..999}; do ??? > Datei_$i.txt; done
Ich will also den String aus Position 29 bis 31 abgreifen und die Zeile in eine eigene Datei schreiben. Mit grep funktioniert das leider nicht, da grep mir auch die 101 aus Position 20 bis 22 aus der 2. Zeile abgreifen würde. Mit cut kann ich zwar auf die entsprechenden Positionen reduzieren aber dann kann ich den Zeileninhalt nicht mehr in die Datei schreiben.
Es geht bestimmt mit awk, welches ich leider bisher kaum beherrsche. Ich kann mit awk auf die Position beschneiden, hilft mir aber nicht, da das nicht funktioniert:
grep $(awk '{print substr($0,29,3)}' Datei.txt) Datei.txt > Datei_$i.txt
Kann ja auch nicht funktionieren, da awk mehrere Werte zurückgibt.
ich möchte einen String der in jeder Zeile einer Datei vorkommt nur an einer bestimmte Stelle in der Zeile abgreifen und die Zeilen dann in einzelne Dateien schreiben:
Beispiel Datei:
TESTTESTTEST#000#12345000000101 2009-01-01
TESTTESTTEST#000#12101000000101 2009-01-01
Mein Ansatz:
for i in {101..999}; do ??? > Datei_$i.txt; done
Ich will also den String aus Position 29 bis 31 abgreifen und die Zeile in eine eigene Datei schreiben. Mit grep funktioniert das leider nicht, da grep mir auch die 101 aus Position 20 bis 22 aus der 2. Zeile abgreifen würde. Mit cut kann ich zwar auf die entsprechenden Positionen reduzieren aber dann kann ich den Zeileninhalt nicht mehr in die Datei schreiben.
Es geht bestimmt mit awk, welches ich leider bisher kaum beherrsche. Ich kann mit awk auf die Position beschneiden, hilft mir aber nicht, da das nicht funktioniert:
grep $(awk '{print substr($0,29,3)}' Datei.txt) Datei.txt > Datei_$i.txt
Kann ja auch nicht funktionieren, da awk mehrere Werte zurückgibt.