Re: sed
Am Donnerstag, 24. August 2006 19:16 schrieb Klaus Becker:
> ok, hatte ich nicht dran gedacht.
> 2. Frage:
>
> for (( I=1; $I <=2; I++ )); do
> echo $I
>
> gibt
> 1
> 2
> aus.
>
> for (( I=1; $I <=2; I++ )); do
> sed -i "s/blabla/${I}blabla/g" datei
>
> gibt aber
> 12blabla
> 12blabla
>
> und nicht
> 1blabla
> 2blabla
> aus.
Das liegt daran, dass im ersten Schleifendurchlauf vor *alle* Vorkommen
von »blabla« in der Datei eine 1 geschrieben wird, und im zweiten
Schleifendurchlauf vor *alle* »blabla« eine 2 geschrieben wird.
>
> Mein Ansatz ist falsch, ich bin aber noch nicht weit genug, um den
> richtigen Ansatz zu finden. Ich habe etliches zum Thema gelesen, aber
> lesen und anwenden sind 2 Dinge.
Wenn Du Zeilen numerieren willst, probier's mal so:
i=0; while read zeile; do echo "$((++i))$zeile"; done <datei
Das liest die Datei zeilenweise ein, zählt die Variable i in jedem
Schleifendurchlauf um 1 hoch, und fügt den aktuellen Wert von i vor der
jeweiligen Zeile ein. Ist allerdings nicht »in-place«...
Viele Grüße, Ole
Reply to:
- Follow-Ups:
- Re: sed
- From: Klaus Becker <colonius@free.fr>
- References:
- sed
- From: Klaus Becker <colonius@free.fr>
- Re: sed
- From: Andreas Pakulat <apaku@gmx.de>
- Re: sed
- From: Klaus Becker <colonius@free.fr>