J'ai une série de fichiers dans une arborescence (que je pourrais
trouver avec "find") que je souhaiterais modifier. Je désire remplacer
un texte (disons "toto") par un autre ("tata").
Connaissez-vous un moyen de le faire ? (avec "ed" l'éditeur convivial ?)
Les gens de chez zsh appellent ça des "POSIX quotes", mais je ne sais pas de quel standard ils sortent ça.
Pas de POSIX, en tout cas.
Ça vient de ksh93 et ça se trouve dans bash, ksh93 et zsh.
Fabien SK
Laurent Wacrenier wrote:
Fabien SK <fabsk+ écrit:
echo $',s/toto/tata/gnw' | ed mon_fichier
(echo ,s/toto/tata/g; echo w) | ed -s fichier
Qu'est-ce qui ne va pas avec ma version ?
- C'est quoi $'' ? Ça n'a pas l'air d'être portable.
Le $'n', je l'ai vu dans un script sur mon système (Mandrake linux) un jour. A l'époque, c'était la seule manière que je connaissais pour faire un retour chariot dans une chaîne. Je veux bien utiliser "printf" comme tu le suggères.
Laurent Wacrenier wrote:
Fabien SK <fabsk+news@free.fr> écrit:
echo $',s/toto/tata/gnw' | ed mon_fichier
(echo ,s/toto/tata/g; echo w) | ed -s fichier
Qu'est-ce qui ne va pas avec ma version ?
- C'est quoi $'' ? Ça n'a pas l'air d'être portable.
Le $'n', je l'ai vu dans un script sur mon système (Mandrake linux) un
jour. A l'époque, c'était la seule manière que je connaissais pour faire
un retour chariot dans une chaîne.
Je veux bien utiliser "printf" comme tu le suggères.
- C'est quoi $'' ? Ça n'a pas l'air d'être portable.
Le $'n', je l'ai vu dans un script sur mon système (Mandrake linux) un jour. A l'époque, c'était la seule manière que je connaissais pour faire un retour chariot dans une chaîne. Je veux bien utiliser "printf" comme tu le suggères.
Laurent Wacrenier
Fabien SK <fabsk+ écrit:
Le $'n', je l'ai vu dans un script sur mon système (Mandrake linux) un jour. A l'époque, c'était la seule manière que je connaissais pour faire un retour chariot dans une chaîne.
On peut aussi saisir le retour chariot :
echo ',s/toto/tata/g w' | ed -s fichier
Fabien SK <fabsk+news@free.fr> écrit:
Le $'n', je l'ai vu dans un script sur mon système (Mandrake linux) un
jour. A l'époque, c'était la seule manière que je connaissais pour faire
un retour chariot dans une chaîne.
Le $'n', je l'ai vu dans un script sur mon système (Mandrake linux) un jour. A l'époque, c'était la seule manière que je connaissais pour faire un retour chariot dans une chaîne.
On peut aussi saisir le retour chariot :
echo ',s/toto/tata/g w' | ed -s fichier
Stephane Chazelas
Le 20 Oct 2003 14:35:06 GMT, Stephane Chazelas écrivait : [...]
avec le GNU/*BSD find/xargs/sed:
find . -type f -name '*.type' -print0 | xargs -r0 sed -i 's/toto/tata/g'
Avec perl et zsh:
perl -pi -e 's/toto/tata/g' ./**/*.type(.)
Avec perl tout court:
perl -MFile::Find -pi -e'BEGIN{find sub{ ,$File::Find::name if -f&&/.type$/},"."} s/toto/tata/g'
Pour que les trois solutions soient équivalentes (enfin, un peu plus équivalentes, du moins fonctionnellement), il faudrait en fait :