Avatar billede folle Nybegynder
27. februar 2003 - 17:33 Der er 10 kommentarer og
1 løsning

bash script som udskifter tekststreng

Jeg vil gerne lave et bash script som udskifter denne tekststreng:
#include <math.h>
med:
#define M_PI 3.1415926535898
i nogle filer.

Jeg kunne forstille mig noget i denne stil:
grep #include <math.h> * -R | cat ?????
Avatar billede alrua Nybegynder
27. februar 2003 - 17:35 #1
hvorfor ikke bare lave math.h med den definition i? :D
Avatar billede simonvalter Praktikant
27. februar 2003 - 17:42 #2
cat file | sed -e 's/#include <math.h>/#define M_PI 3.1415926535898/g' > newfile
Avatar billede simonvalter Praktikant
27. februar 2003 - 17:55 #3
med flere filer kan du 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
Avatar billede simonvalter Praktikant
27. februar 2003 - 17:57 #4
den her er oxo nice
find . -type f|xargs perl -i -pe 's/foo/bar/gi'

single command med multiple filer.
Avatar billede folle Nybegynder
27. februar 2003 - 18:51 #5
Her er hvad jeg er nået frem til:

grep -l #include <math.h> * | cat ??? | sed -e 's/#include <math.h>/#define M_PI 3.1415926535898/g' > ???

Hvordan får jeg filnavnene fra grep sendt over i standard input på cat og hvordan sender jeg output fra sed -e ... tilbage til den samme fil?
Avatar billede simonvalter Praktikant
27. februar 2003 - 18:53 #6
hvis det skal være i den samme fil så brug den her

find . -type f|xargs perl -i -pe 's/foo/bar/gi'
Avatar billede simonvalter Praktikant
27. februar 2003 - 18:54 #7
det du gør der giver ingen mening ..
Avatar billede folle Nybegynder
27. februar 2003 - 19:06 #8
Jeg forstår ikke hvad "find . -type f|xargs perl -i -pe 's/foo/bar/gi'" gør og hvordan den kan bruges i denne sammenhæng. Kan du uddybe det lidt nærmere?
Avatar billede simonvalter Praktikant
27. februar 2003 - 19:07 #9
hvis du har en mappe med de filer du skal ændre .. gør du bare
cd mappe
find . -type f|xargs perl -i -pe 's/foo/bar/gi

så vil alle filer hvor der står foo i blive skiftet ud med bar
Avatar billede folle Nybegynder
27. februar 2003 - 19:25 #10
Det virker. Tak for hjælpen.
Avatar billede simonvalter Praktikant
27. februar 2003 - 19:27 #11
np
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester