Hallo Liste, stehe vor einem kleinen Problem: Ich will in einer txt-Datei jeweils am Zeilenanfang (dort steht schon ein Semikolon) in jede Zeile eine steigende Jahreszahl einfügen. Mit sed 's/^;/2000&/g' datei.txt klappt das auch (für eine Zahl) Mit: for i in `seq 1969 2000`; do echo $i; done kann ich meine Zahlenkette erzeugen. Aber wie kann ich das jetzt so zusammenbiegen, das ich meine fortlaufende Jahreszahl am Anfang stehen habe? Danke für Anregungen! Gruß, Uli
Hallo, Am Montag, 6. Mai 2002 10:04 schrieb Ulrich Klenk:
Ich will in einer txt-Datei jeweils am Zeilenanfang (dort steht schon ein Semikolon) in jede Zeile eine steigende Jahreszahl einfügen.
Mit sed 's/^;/2000&/g' datei.txt klappt das auch (für eine Zahl)
Mit: for i in `seq 1969 2000`; do echo $i; done kann ich meine Zahlenkette erzeugen.
Das ist zuviel verlangt von `sed'. Nimm `awk'.
BEGIN { jahr = 1989 }
/^;/ { $0 = jahr++ "&" $0 ; print }
Oder so ähnlich (nicht getestet).
Gruß
Bertram
--
Bertram Scharpf
Am Montag, 6. Mai 2002 10:23 schrieb Bertram Scharpf:
Das ist zuviel verlangt von `sed'. Nimm `awk'.
BEGIN { jahr = 1989 } /^;/ { $0 = jahr++ "&" $0 ; print }
Oder so ähnlich (nicht getestet).
<MEMO recipient="/me">Endlich awk lernen!</MEMO> Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
Hi Ulrich, Am Montag, 6. Mai 2002 10:04 schrieb Ulrich Klenk:
Ich will in einer txt-Datei jeweils am Zeilenanfang (dort steht schon ein Semikolon) in jede Zeile eine steigende Jahreszahl einfügen.
Mit sed 's/^;/2000&/g' datei.txt klappt das auch (für eine Zahl)
Mit: for i in `seq 1969 2000`; do echo $i; done kann ich meine Zahlenkette erzeugen.
Aber wie kann ich das jetzt so zusammenbiegen, das ich meine fortlaufende Jahreszahl am Anfang stehen habe?
<ungetestet> $ counter=1969 $ while read line; do echo $line | sed "s/^;/${counter}&/g" >>neu.txt; \ counter=$(($counter+1)); done < alt.txt oder lesbar: #! /bin/bash counter=1969 while read line do echo $line | sed "s/^;/${counter}&/g" >> neuer-text.txt counter=$(($counter+1)) done < alter-text.txt </ungetestet> Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
Hallo, On Mon, 06 May 2002, Stephan Hakuli wrote:
<ungetestet>
dito
$ counter=1969 $ while read line; do echo $line | sed "s/^;/${counter}&/g" >>neu.txt; \ counter=$(($counter+1)); done < alt.txt
Wenn's auch bash-intern sein darf (keine n-sed-prozesse!): $ counter=1969; while read line; do line="${line//#;/$counter;}"; \ echo "$line"; counter=$[counter+1]; done < alt.txt > neu.txt -dnh -- Braucht Ihr ab oder zunehmen ??? Ich benutze zur Zeit ein total tolles Zeug um abzunehmen. Es geht irre schnell und ist wunderbar. Es ist auch gebrauchlich zum zunehmen. Ihr koenntet auch business tun.....interestan nicht war ??? ['disa_linn@my-deja.com spammt mit viel Hirn in dag°]
participants (4)
-
Bertram Scharpf
-
David Haller
-
Stephan Hakuli
-
Ulrich Klenk