$ sed 's+usr/bin/ruby+opt/local/bin/ruby' fichier > fichier.tmp
puis, après vérification éventuelle du résultat :
$ mv fichier.tmp fichier
(attention, sed remplacera la première occurrence de la chaîne dans toutes les lignes où elle apparaît).
Pour une série de fichiers, par exemple fic1, fic2, ..., ficN :
$ for i in fic* do sed '.....' $i > $i.tmp mv $i.tmp $i done
merci pour l'info, j'ai réalisé mon script en ruby mais j'essayerai sed... en command line c'est plus marrant ))
avec ruby je supprime toutes les lignes qui contiennent /^#!.*bin/ruby$/ (à mon avis il n'y en a jamais qu'une seule)
donc, avec sed on n'est pas obligé d'escaper "/" ? -- une bévue
nospam
Une bévue wrote:
donc, avec sed on n'est pas obligé d'escaper "/" ?
Non. Il faudrait le faire si on conservait le séparateur de chaînes par défaut de sed qui est '/', mais on peut le remplacer par n'importe quel autre caractère ('+' dans mon exemple) et du coup, '/' devient un caractère comme un autre (c'est aussi vrai dans vi). Par contre, les métacaractères comme . ou * doivent eux toujours être escapés.
A++ -- Christian
Une bévue <pere.noel@laponie.com> wrote:
donc, avec sed on n'est pas obligé d'escaper "/" ?
Non. Il faudrait le faire si on conservait le séparateur de chaînes par
défaut de sed qui est '/', mais on peut le remplacer par n'importe quel
autre caractère ('+' dans mon exemple) et du coup, '/' devient un
caractère comme un autre (c'est aussi vrai dans vi). Par contre, les
métacaractères comme . ou * doivent eux toujours être escapés.
donc, avec sed on n'est pas obligé d'escaper "/" ?
Non. Il faudrait le faire si on conservait le séparateur de chaînes par défaut de sed qui est '/', mais on peut le remplacer par n'importe quel autre caractère ('+' dans mon exemple) et du coup, '/' devient un caractère comme un autre (c'est aussi vrai dans vi). Par contre, les métacaractères comme . ou * doivent eux toujours être escapés.
A++ -- Christian
Eric Jacoboni
(Une bévue) writes:
avec ruby je supprime toutes les lignes qui contiennent /^#!.*bin/ruby$/ (à mon avis il n'y en a jamais qu'une seule)
donc, avec sed on n'est pas obligé d'escaper "/" ?
En Ruby non plus :)
Il suffit d'utiliser %r pour définir une regexp délimitée par autre chose que /, histoire d'éviter les collisions avec le / littéral...
Si je prend l'exemple de ta regexp, ça donnerait :
%r+^#!.*bin/ruby$+
(j'ai choisi + comme délimiteur ici... ) -- Eric Jacoboni, ne il y a 1439250429 secondes
pere.noel@laponie.com (Une bévue) writes:
avec ruby je supprime toutes les lignes qui contiennent
/^#!.*bin/ruby$/
(à mon avis il n'y en a jamais qu'une seule)
donc, avec sed on n'est pas obligé d'escaper "/" ?
En Ruby non plus :)
Il suffit d'utiliser %r pour définir une regexp délimitée par autre
chose que /, histoire d'éviter les collisions avec le / littéral...
Si je prend l'exemple de ta regexp, ça donnerait :
%r+^#!.*bin/ruby$+
(j'ai choisi + comme délimiteur ici... )
--
Eric Jacoboni, ne il y a 1439250429 secondes