[perl] Search & Replace

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • xares
  • Registratie: Januari 2007
  • Laatst online: 18-09 10:04
Ik wil met onderstaand script

code:
1
extension_dir = "./"


vervangen door:

code:
1
extension_dir = "/usr/local/lib/php"


code:
1
perl -pi -e 's/extension_dir = "./"/extension_dir = "/usr/local/lib/php"/' /usr/local/etc/php5/cgi/php.ini



Foutmelding:

[root@testscript ~]# perl -pi -e 's/extension_dir = "./"/extension_dir = "/usr/local/lib/php"/' /usr/local/etc/php5/cgi/php.ini
Can't find string terminator '"' anywhere before EOF at -e line 1.


(Linux)

Ik vermoed dat het iets te maken heeft met de quotes.
Echter heb ik de balle verstand van scripting 8)7

Alvast bedankt voor de hulp :)

[ Voor 22% gewijzigd door xares op 23-05-2009 23:52 . Reden: Foutmelding vermelden ]


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 19:01
Je zult je / moeten escapen met \, aangezien dat een gereserveerd teken is bij het gebruik van reguliere expressies.

BTW: Waarom perl? Op linux heb je sed ;)

Acties:
  • 0 Henk 'm!

  • xares
  • Registratie: Januari 2007
  • Laatst online: 18-09 10:04
Thanks het is gelukt:)

Elke / moest een \ voor.

code:
1
perl -pi -e 's/extension_dir = ".\/"/extension_dir = "\/usr\/local\/lib\/php"/' /usr/local/etc/php5/cgi/php.ini

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:15
Je mag bij Perl-compatible reguliere expressies meestal ook een willekeurig karakter in plaats van de slash gebruiken, wat handig is als die slash in je patroon voorkomt zoals hier. Zoiets bijvoorbeeld:
perl -pi -e 's|extension_dir = "./"|extension_dir = "/usr/local/lib/php"|'

(Ik heb nu een pipe gebruikt, maar het kan van alles zijn.) Escapen van slashes kan natuurlijk ook prima, maar is naar mijn mening iets minder makkelijk te lezen en schrijven.