/ 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
search/replace på kommandolinie i flere fi~
Fra : Kim Emax


Dato : 30-12-02 10:24

Hey

Jeg render fra tid til anden ind i at skulle lave "globae" ændringer i en
del filer. Denne gang er det mysql_query jeg ønsker at ændre til db_query.
Jeg ved at man kan den slags med Sed og Awk, men jeg kender nada til disse.
Perl er nok også en mulighed? Evt. kunne man indlæse filerne, der skal
ændres fra en fil. Er der en, der lige kan ryste et guldkorn op af ærmet?

--
Kim Emax



 
 
Klaus Alexander Seis~ (30-12-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 30-12-02 10:42

Kim Emax skrev:

> Denne gang er det mysql_query jeg ønsker at ændre til db_query.

Du kan bruge "sed 's/mysql_query/db_query/g'". Fx

for FILE in *.sql
do
sed 's/mysql_query/db_query/g' <${FILE} >${FILE}.tmp && mv -f ${FILE}{.tmp,}
done

Man kan helt sikkert osse lave en étlinjes i Perl, men det må andre
nok hellere tage sig af.


// Klaus

--
><>    vandag, môre, altyd saam

Kim Emax (30-12-2002)
Kommentar
Fra : Kim Emax


Dato : 30-12-02 10:52

"Klaus Alexander Seistrup" <jakabov119@magnetic-ink.dk> wrote

> Du kan bruge "sed 's/mysql_query/db_query/g'". Fx
>
> for FILE in *.sql
> do
> sed 's/mysql_query/db_query/g' <${FILE} >${FILE}.tmp && mv -f
${FILE}{.tmp,}
> done

nice, tak for det hurtige svar..

Iøvrigt sej mailadresse du der har. Jeg prøvede at prakke jakabov.dk på en
nyansat mand jeg skulle oplære for 3-4 år siden hos World online, men han
tog det sgu aldrig:
http://www.dk-hostmaster.dk/dkhostcms/bs?query=jakabov.dk&pageid=82&action=c
msview&lang=da - måske var det noget for dig? Du kan få mit slogan
"jakabov.dk - spam på den fede måde" for en kim@jakabov.dk

--
Kim Emax




Klaus Alexander Seis~ (30-12-2002)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 30-12-02 13:09

Kim Emax skrev:

> måske var [jakabov.dk] noget for dig?

Ja, det ku' være morsomt.


// Klaus

--
><>    vandag, môre, altyd saam

Peter Makholm (30-12-2002)
Kommentar
Fra : Peter Makholm


Dato : 30-12-02 11:55

Klaus Alexander Seistrup <jakabov119@magnetic-ink.dk> writes:

> Du kan bruge "sed 's/mysql_query/db_query/g'". Fx

Jeg har altid foretrukket at bruge perl, der har inline-editering til
den slags. Nogle versioner af sed har en ligende -i option, der kan
dette.

--
Peter Makholm | We constantly have to keep in mind why natural
peter@makholm.net | languages are good at what they're good at. And to
http://hacking.dk | never forget that Perl is a human language first,
| and a computer language second

Jacob Bunk Nielsen (30-12-2002)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 30-12-02 11:16

"Kim Emax" <news@remove-emax.dk> writes:

> Jeg render fra tid til anden ind i at skulle lave "globae" ændringer i en
> del filer. Denne gang er det mysql_query jeg ønsker at ændre til db_query.
> Jeg ved at man kan den slags med Sed og Awk, men jeg kender nada til disse.
> Perl er nok også en mulighed? Evt. kunne man indlæse filerne, der skal
> ændres fra en fil. Er der en, der lige kan ryste et guldkorn op af ærmet?


Jeg lavede noget i stil med:

find . -type f|xargs perl -i -pe 's/foo/bar/gi'

På en stribe filer så sent som i går

--
Jacob - www.bunk.cc
Amnesia used to be my favorite word, but then I forgot it.

Kim Emax (30-12-2002)
Kommentar
Fra : Kim Emax


Dato : 30-12-02 11:26


"Jacob Bunk Nielsen" <spam@bunk.cc> wrote

> find . -type f|xargs perl -i -pe 's/foo/bar/gi'

g er greedy, men hvad gør i? Ignore case?

Du må gerne lige forklare -i -pe, hvis du har tid

Men tak for postingen, jeg sparer vist lidt tid på den front fremover,
dejligt

--
Kim Emax



Jacob Bunk Nielsen (30-12-2002)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 30-12-02 11:40

"Kim Emax" <news@remove-emax.dk> writes:
> "Jacob Bunk Nielsen" <spam@bunk.cc> wrote
>
>> find . -type f|xargs perl -i -pe 's/foo/bar/gi'
>
> g er greedy, men hvad gør i? Ignore case?

Fra perlrun(1):

,----
| -i[extension]
| specifies that files processed by the "<>" construct are to be
| edited in-place. It does this by renaming the input file,
| opening the output file by the origi- nal name, and selecting
| that output file as the default for print() statements. The
| extension, if supplied, is used to modify the name of the old
| file to make a backup copy, following these rules: [ ... ]
`----


> Du må gerne lige forklare -i -pe, hvis du har tid

Igen, fra perlrun(1):

,----
| -p causes Perl to assume the following loop around your
| program, which makes it iterate over filename argu-
| ments somewhat like sed:
|
| LINE:
| while (<>) {
| ... # your program goes here
| } continue {
| print or die "-p destination: $!\n";
| }
| [ ... ]
`----

You guess where it came from:

,----
| -e commandline
| may be used to enter one line of program. If -e is given,
| Perl will not look for a filename in the argu- ment list.
| Multiple -e commands may be given to build up a multi-line
| script. Make sure to use semi- colons where you would in a
| normal program.
`----

--
Jacob - www.bunk.cc
I can resist anything but temptation.

Jacob Bunk Nielsen (30-12-2002)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 30-12-02 11:44

Jacob Bunk Nielsen <spam@bunk.cc> writes:

> "Kim Emax" <news@remove-emax.dk> writes:
>> "Jacob Bunk Nielsen" <spam@bunk.cc> wrote
>>
>>> find . -type f|xargs perl -i -pe 's/foo/bar/gi'
>>
>> g er greedy, men hvad gør i? Ignore case?
>
> Fra perlrun(1):

Orv, det var nok det sidste i du mente, ikke? Ja, det er ignore case.
Det står i øvrigt i perlre(1).

--
Jacob - www.bunk.cc
Why does a ship carry cargo and a truck carry shipments?

Kim Emax (30-12-2002)
Kommentar
Fra : Kim Emax


Dato : 30-12-02 11:53


"Jacob Bunk Nielsen" <spam@bunk.cc> wrote

> Orv, det var nok det sidste i du mente, ikke? Ja, det er ignore case.
> Det står i øvrigt i perlre(1).

Jo, det var det ... Sorry jeg ikke fik kigget i man siderne selv, slipped my
mind

tak for din hjælp.

--
Kim Emax



Peter Makholm (30-12-2002)
Kommentar
Fra : Peter Makholm


Dato : 30-12-02 12:07

"Kim Emax" <news@remove-emax.dk> writes:

>> find . -type f|xargs perl -i -pe 's/foo/bar/gi'
>
> g er greedy, men hvad gør i? Ignore case?

Nej, g betyder global.

Greedy har noget med virkningen af ?, *, + og {n,m} i selve de
regulære udtryk at gøre og kan ikke sættes globalt.

--
Peter Makholm | Wisdom has two parts:
peter@makholm.net | 1) having a lot to say, and
http://hacking.dk | 2) not saying it

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

Månedens bedste
Årets bedste
Sidste års bedste