/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Skifte streng i mange filer
Fra : Michael Andreasen


Dato : 14-09-02 07:49

Hey.. Jeg har lavet en søgning efter en streng med

find . -name "*" -exec grep "streng" {} \; -print

Er der en "nem" måde at udskifte denne streng som man finder med en anden
streng?

Mvh
Michael Andreasen



 
 
Lars Kongshøj (14-09-2002)
Kommentar
Fra : Lars Kongshøj


Dato : 14-09-02 09:22

Michael Andreasen wrote:
> Hey.. Jeg har lavet en søgning efter en streng med
> find . -name "*" -exec grep "streng" {} \; -print
> Er der en "nem" måde at udskifte denne streng som man finder med en anden
> streng?

Det er en ting man tit har brug for. Det traditionelle unix-værktøj til
den slags ting er "sed", men der vil også sikkert også være nogen, der
foreslår "perl", som jeg dog ikke kender (endnu).

Med "sed" kan det for eksempel gøres med

sed 's/gammelt/nyt/g' gammelfil > nyfil

I det ovenstående er "gammelt" et regulært udtryk, hvor diverse tegn har
speciel betydning. Hvis "/" indgår i det du søger, kan du med fordel
bruge "%" i stedet for "/" i ovenstående eksempel.

En bregrænsning ved de fleste implementationer af sed er at man ikke kan
redigere enkeltfiler, men er nødt til at omdirigere uddata. Denne
begrænsning er fjernet i "Super-sed", som i følge rygter skulle danne
basis for en kommende version 4 af GNU sed.
http://queen.rett.polimi.it/~paolob/seders/ssed/

Med den kan man bruge syntaksen:
sed -i 's/gammelt/nyt/g' fil

--
Lars Kongshøj
Registrer dig som linux-bruger:
http://counter.li.org/enter-person.php

Kim Hansen (14-09-2002)
Kommentar
Fra : Kim Hansen


Dato : 14-09-02 10:02

Lars Kongshøj <lars_kongshoj@hotmail.com> writes:

> Michael Andreasen wrote:
> > Hey.. Jeg har lavet en søgning efter en streng med
> > find . -name "*" -exec grep "streng" {} \; -print
> > Er der en "nem" måde at udskifte denne streng som man finder med en anden
> > streng?
>
> Det er en ting man tit har brug for. Det traditionelle unix-værktøj til
> den slags ting er "sed", men der vil også sikkert også være nogen, der
> foreslår "perl", som jeg dog ikke kender (endnu).
>
> Med "sed" kan det for eksempel gøres med
>
> sed 's/gammelt/nyt/g' gammelfil > nyfil
>
> I det ovenstående er "gammelt" et regulært udtryk, hvor diverse tegn har
> speciel betydning. Hvis "/" indgår i det du søger, kan du med fordel
> bruge "%" i stedet for "/" i ovenstående eksempel.
>
> En bregrænsning ved de fleste implementationer af sed er at man ikke kan
> redigere enkeltfiler, men er nødt til at omdirigere uddata. Denne
> begrænsning er fjernet i "Super-sed", som i følge rygter skulle danne
> basis for en kommende version 4 af GNU sed.
> http://queen.rett.polimi.it/~paolob/seders/ssed/
>
> Med den kan man bruge syntaksen:
> sed -i 's/gammelt/nyt/g' fil

Det er næsten det samme når man bruger Perl
perl -pi -e's/gammelt/nyt/g' fil(er)

Hvis man gerne vil have backup af de filer man retter så kan man
skrive:
perl -pi.bak -e's/gammelt/nyt/g' fil(er)

--
Kim Hansen | |\ _,,,---,,_ | Det er ikke
Dalslandsgade 8, A708 | /,`.-'`' -. ;-;;,_ | Jeopardy.
2300 København S | |,4- ) )-,_. ,\ ( `'-' | Svar _efter_
Phone: 32 88 60 86 | '---''(_/--' `-'\_) | spørgsmålet.

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408878
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste