From andreas.riedel@hrz.tu-chemnitz.de Sat Aug 3 16:53:18 2002 Path: uni-berlin.de!fu-berlin.de!uni-erlangen.de!news.tu-chemnitz.de!tmn.csn.tu-chemnitz.de!not-for-mail From: Andreas Riedel Newsgroups: de.comp.os.unix.shell Subject: Re: Zeichen ersetzen mit sed Date: 29 Jul 2002 15:14:49 GMT Organization: Chemnitz University of Technology Lines: 34 Message-ID: References: NNTP-Posting-Host: tmn.csn.tu-chemnitz.de Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: narses.hrz.tu-chemnitz.de 1027956009 7906 134.109.104.217 (29 Jul 2002 15:20:09 GMT) X-Complaints-To: abuse@tu-chemnitz.de NNTP-Posting-Date: 29 Jul 2002 15:20:09 GMT User-Agent: slrn/0.9.7.4 (FreeBSD) Xref: uni-berlin.de de.comp.os.unix.shell:9290 Matthias Weber schrieb: > in folgender Zeile möchte ich in den Spalten drei und vier > den Punkt durch ein Komma ersetzen. > > 20.06.2002 04:00:00 123.4 678.9 > > Die Spalten drei und vier haben zudem variable Formate > von x.x bis xxxx.x > > Da der 'Punkt' mehrfach (auch im Datum) vorkommt bekomme ich > sed nicht dazu das (und nur das) zu tun. Man kann ausnutzen, daß das Datum immer genau zwei Punkte enthält. sed -e 's/\./,/3' ersetzt den 3. Punkt der Zeile. Das macht man 2 mal (leider wird immer nur eine Ziffer akzeptiert): sed -e 's/\./,/3' -e 's/\./,/3' Fertig. Wenn hinten mehr Punkte stehen, kann man auch erst alle Punkte ersetzen, und dies dann bei den ersten beiden rückgängig machen: sed -e 's/\./,/g' -e 's/,/./' -e 's/,/./' Gruß Andreas -- Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one. (T. Jefferson) From pb@usenet-jul-2002.fips.de Sat Aug 3 16:54:06 2002 Path: uni-berlin.de!fu-berlin.de!newsfeed.vmunix.org!world.cabal1.net!world.wronline.de!not-for-mail From: Philipp Buehler Newsgroups: de.comp.os.unix.shell Subject: Re: Zeichen ersetzen mit sed Date: Mon, 29 Jul 2002 14:27:19 +0000 (UTC) Organization: sysfive.com GmbH - UNIX. Networking. Security. Applications. Lines: 31 Message-ID: References: Reply-To: Philipp.Buehler@usenet-jul-2002.fips.de NNTP-Posting-Host: world.cabal1.net Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: world.cabal1.net 1027952839 9824 80.65.32.84 (29 Jul 2002 14:27:19 GMT) X-Complaints-To: usenet@world.cabal1.net NNTP-Posting-Date: Mon, 29 Jul 2002 14:27:19 +0000 (UTC) User-Agent: slrn/0.9.7.2 (Linux) Xref: uni-berlin.de de.comp.os.unix.shell:9285 * Matthias (matthias.weber@koptel.de) wrote: [einmal posten reicht] > in folgender Zeile möchte ich in den Spalten drei und vier > den Punkt durch ein Komma ersetzen. > > 20.06.2002 04:00:00 123.4 678.9 > > Die Spalten drei und vier haben zudem variable Formate > von x.x bis xxxx.x Solange es nicht auch noch .x gibt: sed -e 's/\([0-9][0-9]*\)\.\([0-9]\)\( *\)\([0-9][0-9]*\)\.\([0-9]\)$/\1,\2\3\4,\5/' > Da der 'Punkt' mehrfach (auch im Datum) vorkommt bekomme ich > sed nicht dazu das (und nur das) zu tun. Mal bischen mehr sed howto/buecher lesen ;) Kann's auch awk sein? awk -F. '{print $1 FS $2 FS $3 "," $4 "," $5 }' Ist sicherlich noch optimierbar.. ciao -- "Unix was the first OS where you could carry the media and system documentation around in a briefcase. This was fixed in BSD4.2."