gudn tach!
ich war eben in eile und habe deswegen nicht noch mal drueber geschaut, was ich da eigentlich geschrieben hatte.
jetzt also noch ein paar praezisierungen/korrekturen.
[vim]
qqj3ddq25000@q:w<enter>
fertig.
erklaerung:
q beginne makro-aufzeichnung
q speichere das makro ins register "q"
j gehe in die naechste zeile
3dd loesche diese und die beiden folgenden zeilen
q beende makro-aufzeichnung
25000@q spiele das makro im register "q" 25000 mal ab.
:w<enter> speichere ergebnis ("<enter>" steht fuer das druecken der enter-taste)
das setzt voraus, dass die anzahl der zeilen der datei 100004 ist, weil durch das makro-aufzeichnen ja bereits die ersten vier zeilen abgehandelt wurden.
for /l %i in (1,4,12) do @more +%i test.txt | \usr\local\wbin\head -n1 > ausgabe.txt
in der bahn ist mir eingefallen, dass noch nicht ganz richtig ist.
(for /l %i in (1,4,12) do @more +%i test.txt | \usr\local\wbin\head -n1) > ausgabe.txt
sollte richtig sein.
12 muss noch durch die richtige anzahl der zeilen ersetzt werden.
kannst du ermitteln mit
find /c ":" test.txt
wenn's flexibel gestaltet werden soll, geht das z.b. folgendermassen:
for /f "usebackq" %i in (find /c ":" test.txt ^| findstr ":" ^| sed -e "s/.\*: //"
) do set zeilenanzahl=%i
(for /l %i in (1,4,%zeilenanzahl%) do @more +%i test.txt | \usr\local\wbin\head -n1) > ausgabe.txt
oder gleich in einem rutsch:
for /f "usebackq" %i in (find /c ":" test.txt ^| findstr ":" ^| sed -e "s/.\*: //"
) do @(for /l %j in (1,4,%i) do @more +%j test.txt | \usr\local\wbin\head -n1) > ausgabe.txt
wobei u.u. der pfad zu head.exe (\usr\local\wbin\head) noch angepasst werden muss.
dieses mal habe ich den code auch sicherheitshalber ausprobiert.
prost
seth