Ich muss ein file in der vorm:
[...]
0.234234E+001 1.234456E+002
1.457645E+002 2.234234E+001
[...]
ersetzen duch:
[...]
0,234234E+002 1,234456E+003
1,457645E+003 2,234234E+002
[...]
Also eine 10er Potenz nach oben, und Punkt durch Komma ersetzen.
Nun hab ich dank google und co schon herausgefunden, dass dies sehr schön mit
"sed s/+001/+002/g" usw. geht!. Leider funtioniert das ersetzten der Zeichen nur mit
"+001 durch +002"usw., aber nicht mit punkt durch Komma!
Der Befehl : sed s/./,/g liefert in etwa:
,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
Wer Kann mir sagen wie ich auch Punkt durch Komma erstezen kann.
Entweder mit "sed" oder auch mit "awk"? ..oder gibts noch was schöneres? :-)
Vielen dank für Tip und Ratschläge
Grüsse Sepp
echo "test "bla . x y , ." | sed s/\\./,/g
macht dann wie es soll.
Gruß
Hans
> Versuch mal sed s/\./,/g
..ging nicht, aber
sed s/\\./,/g file >new_file
War genau das was ich gesucht hab!
Vielen dank!
Ciao Sepp
Ui, das ist aber gefährlich, da Du beim mehrfachen Durchlauf die schon
ersetzten Zeichen nochmal ersetzt. Ich würde da lieber mit awk
schnippeln und rechnen:
#!/usr/bin/awk -f
{
a=substr($1, 11, 3);
b=substr($2, 11, 3);
sub("\\.", ",", $1)
sub("\\.", ",", $2)
printf("%s%03i\t%s%03i\n", substr($1,0,10), ++a, substr($2,0,10), ++b);
}
o.s.ä.
Gruß,
Christian
Um späteren Fragen in Sachen sed vorzubeugen, empfehle ich die Manpage
regex(7). Die hilft auch bei grep awk und sogar vi(m).
bye Gerhard
> Um späteren Fragen in Sachen sed vorzubeugen, empfehle ich die Manpage
> regex(7). Die hilft auch bei grep awk und sogar vi(m).
Sooo furchtbar viel steht da allerdings nicht drin. Die sed Infoseite
wäre auch noch empfehlenswert. Und allfällige Tutorials ==> Google
Bernd
--
Those who desire to give up freedom in order to gain security,
will not have, nor do they deserve, either one. [T. Jefferson]
Sebastian Hofbauer <sebastian...@web.de> wrote:
>
> Nun hab ich dank google und co schon herausgefunden, dass dies sehr schön mit
> "sed s/+001/+002/g" usw. geht!. Leider funtioniert das ersetzten der Zeichen nur mit
> "+001 durch +002"usw., aber nicht mit punkt durch Komma!
>
> Der Befehl : sed s/./,/g liefert in etwa:
> ,,,,,,,,,,,,,,,,,
> ,,,,,,,,,,,,,,,,,
> ,,,,,,,,,,,,,,,,,
Du moechtest dich mit "regular expressions" vertraut machen und
naechstes mal in einer Gruppe fragen, wo deine Frage OnTopic ist
(in diesem Fall wohl de.comp.os.unix.shell) ...
Um die Sonderbedeutung des "." in regular expressions loszuwerden,
muss man ihn durch einen vorangestellten "\" quoten, also "\." ...
Tschuess,
Juergen Ilse (jue...@usenet-verwaltung.de)
Sebastian Hofbauer <sebastian...@web.de> wrote:
>
> Nun hab ich dank google und co schon herausgefunden, dass dies sehr schön mit
> "sed s/+001/+002/g" usw. geht!. Leider funtioniert das ersetzten der Zeichen n
ur mit
> "+001 durch +002"usw., aber nicht mit punkt durch Komma!
>
> Der Befehl : sed s/./,/g liefert in etwa:
> ,,,,,,,,,,,,,,,,,
> ,,,,,,,,,,,,,,,,,
> ,,,,,,,,,,,,,,,,,
Du moechtest dich mit "regular expressions" und der "command line expansion"
deiner shell vertraut machen und naechstes mal in einer Gruppe fragen, wo
deine Frage OnTopic ist (in diesem Fall wohl de.comp.os.unix.shell) ...
^L
Um die Sonderbedeutung des "." in regular expressions loszuwerden,
muss man ihn durch einen vorangestellten "\" quoten, also "\." ...
Da aber die shell ein vorangestelltest "\" bereits als Sonderzeichen
(quoten des nachfolgenden Zeichens) erkennt, muss man fuer die shell
dann den "\" nochmals quoten (z.B. durch einschliessen in Anfuehrungs-
zeichen oder voranstellen eines weiteren "\").
Tschuess,
Juergen Ilse (jue...@usenet-verwaltung.de)