J'ai plusieurs fichiers TEX écrits avec emacs+auctex. Je voudrais
remplacer le mot \niveau dans plusieurs fichiers pr le mot \lniveau .
Peut-on réaliser cela avec emacs en une seule fois ? en ligne de
commande ? ou avec unix ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques L'helgoualc'h
Matthieu Moy a dit : [...]
sed "s/niveau/lniveau/gw$HOME/tempo/$i"
est une piste.
Non, seules les lignes *modifiées* iront dans ~/tempo/$i ...
[...]
(Oui, je sais, parce que sed est plus léger et plus standard, mais pour une commande executée une fois, je me fiche des performances et de la portabilité !)
Ouais, mais avec sed il y a moins de caractères à taper :)
perl -pi -e 's/niveau/lniveau/' *.tex
fait tout en une ligne ! (et en ne lançant perl qu'une seule fois, donc, ça peut même être plus rapide que sed !!)
Mon oeil ! Sed v.4 a l'option -i,
782336 /usr/bin/perl 34816 /bin/sed
et le tutoriel Sed est plus court aussi ;)
(perl -h pour comprendre le -pi -e).
Au pire,
find . -name *.tex -exec perl -pi -e '...' {} ;
Vraiment pire, tu lances un nouveau perl sur *chaque* fichier ;)
find -name *.tex -type f|xargs sed -i -e '...'
-- Jacques L'helgoualc'h
Matthieu Moy <MatthieuNOSPAM.Moy@imag.fr.invalid> a dit :
[...]
sed "s/\niveau/\lniveau/gw$HOME/tempo/$i"
est une piste.
Non, seules les lignes *modifiées* iront dans ~/tempo/$i ...
[...]
(Oui, je sais, parce que sed est plus léger et plus standard, mais
pour une commande executée une fois, je me fiche des performances et
de la portabilité !)
Ouais, mais avec sed il y a moins de caractères à taper :)
perl -pi -e 's/\niveau/\lniveau/' *.tex
fait tout en une ligne ! (et en ne lançant perl qu'une seule fois,
donc, ça peut même être plus rapide que sed !!)
Mon oeil ! Sed v.4 a l'option -i,
782336 /usr/bin/perl
34816 /bin/sed
et le tutoriel Sed est plus court aussi ;)
(perl -h pour comprendre le -pi -e).
Au pire,
find . -name *.tex -exec perl -pi -e '...' {} ;
Vraiment pire, tu lances un nouveau perl sur *chaque* fichier ;)
Non, seules les lignes *modifiées* iront dans ~/tempo/$i ...
[...]
(Oui, je sais, parce que sed est plus léger et plus standard, mais pour une commande executée une fois, je me fiche des performances et de la portabilité !)
Ouais, mais avec sed il y a moins de caractères à taper :)
perl -pi -e 's/niveau/lniveau/' *.tex
fait tout en une ligne ! (et en ne lançant perl qu'une seule fois, donc, ça peut même être plus rapide que sed !!)
Mon oeil ! Sed v.4 a l'option -i,
782336 /usr/bin/perl 34816 /bin/sed
et le tutoriel Sed est plus court aussi ;)
(perl -h pour comprendre le -pi -e).
Au pire,
find . -name *.tex -exec perl -pi -e '...' {} ;
Vraiment pire, tu lances un nouveau perl sur *chaque* fichier ;)
find -name *.tex -type f|xargs sed -i -e '...'
-- Jacques L'helgoualc'h
Matthieu Moy
Jacques L'helgoualc'h writes:
sed "s/niveau/lniveau/gw$HOME/tempo/$i"
est une piste.
Non, seules les lignes *modifiées* iront dans ~/tempo/$i ...
J'ai bien dit une piste ;-)
fait tout en une ligne ! (et en ne lançant perl qu'une seule fois, donc, ça peut même être plus rapide que sed !!)
Mon oeil ! Sed v.4 a l'option -i,
Bon a savoir.
Mais il s'agit de GNU sed seulement. Sur un Solaris par exemple, j'ai plus souvent un perl qu'un GNU sed sous la main. (Le premier qui dit que je suis de mauvaise foi et que je veux pas avoir tort ... ;-)
Au pire,
find . -name *.tex -exec perl -pi -e '...' {} ;
Vraiment pire, tu lances un nouveau perl sur *chaque* fichier ;)
find -name *.tex -type f|xargs sed -i -e '...'
Avec ta solution, j'ai
sed: can't read ./fichier: No such file or directory sed: can't read avec: No such file or directory sed: can't read espace.tex: No such file or directory
Alors qu'avec la mienne, ça marche ;-)
Je sais bien que le find -exec lance perl à chaque fois, mais j'avais la flemme de tapper
Pour gérer correctement les caractères spéciaux dans les noms de fichiers et les cas ou le nombre de fichiers à traiter est plus grand que le nombre d'arguments maximum sur une ligne de commande ;-)
-- Matthieu
Jacques L'helgoualc'h <lhh@freeDOTfr.nospam.invalid> writes:
sed "s/\niveau/\lniveau/gw$HOME/tempo/$i"
est une piste.
Non, seules les lignes *modifiées* iront dans ~/tempo/$i ...
J'ai bien dit une piste ;-)
fait tout en une ligne ! (et en ne lançant perl qu'une seule fois,
donc, ça peut même être plus rapide que sed !!)
Mon oeil ! Sed v.4 a l'option -i,
Bon a savoir.
Mais il s'agit de GNU sed seulement. Sur un Solaris par exemple, j'ai
plus souvent un perl qu'un GNU sed sous la main. (Le premier qui dit
que je suis de mauvaise foi et que je veux pas avoir tort ... ;-)
Au pire,
find . -name *.tex -exec perl -pi -e '...' {} ;
Vraiment pire, tu lances un nouveau perl sur *chaque* fichier ;)
find -name *.tex -type f|xargs sed -i -e '...'
Avec ta solution, j'ai
sed: can't read ./fichier: No such file or directory
sed: can't read avec: No such file or directory
sed: can't read espace.tex: No such file or directory
Alors qu'avec la mienne, ça marche ;-)
Je sais bien que le find -exec lance perl à chaque fois, mais j'avais
la flemme de tapper
Pour gérer correctement les caractères spéciaux dans les noms de
fichiers et les cas ou le nombre de fichiers à traiter est plus grand
que le nombre d'arguments maximum sur une ligne de commande ;-)
Non, seules les lignes *modifiées* iront dans ~/tempo/$i ...
J'ai bien dit une piste ;-)
fait tout en une ligne ! (et en ne lançant perl qu'une seule fois, donc, ça peut même être plus rapide que sed !!)
Mon oeil ! Sed v.4 a l'option -i,
Bon a savoir.
Mais il s'agit de GNU sed seulement. Sur un Solaris par exemple, j'ai plus souvent un perl qu'un GNU sed sous la main. (Le premier qui dit que je suis de mauvaise foi et que je veux pas avoir tort ... ;-)
Au pire,
find . -name *.tex -exec perl -pi -e '...' {} ;
Vraiment pire, tu lances un nouveau perl sur *chaque* fichier ;)
find -name *.tex -type f|xargs sed -i -e '...'
Avec ta solution, j'ai
sed: can't read ./fichier: No such file or directory sed: can't read avec: No such file or directory sed: can't read espace.tex: No such file or directory
Alors qu'avec la mienne, ça marche ;-)
Je sais bien que le find -exec lance perl à chaque fois, mais j'avais la flemme de tapper
Pour gérer correctement les caractères spéciaux dans les noms de fichiers et les cas ou le nombre de fichiers à traiter est plus grand que le nombre d'arguments maximum sur une ligne de commande ;-)