Débutant Script Bash - remplacement dans un fichier texte
21 réponses
noone
Bonjour,
je dois modifier un gros document LaTeX.
Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous
répertoires) \section par \Section mais je ne sais pas trop comment m'y
prendre.
Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous répertoires) section par Section mais je ne sais pas trop comment m'y prendre. [...]
Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous
répertoires) section par Section mais je ne sais pas trop comment m'y
prendre.
[...]
Je dois remplacer dans tous les fichiers *.tex (y compris dans les sous répertoires) section par Section mais je ne sais pas trop comment m'y prendre. [...]
Le « + » n'est pas accepté par le find de debian sarge, il lui faut un « ; », «find» de GNU version 4.1.20
Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ?
Non, au contraire, pourquoi?
Pour ne pas lancer une instance de perl par fichier, quand + ne marche pas.
xargs n'est pas compatible avec find (a moins d'utiliser des options specifiques a GNU ou BSD).
Ah oui, c'est plutôt find . -name '*.tex' -type f -print0 | xargs -0 ...
Pour ne remplacer que section (et section*), mais pas sectionmark(*) et autres, on peut utiliser 's/sectionb/Section/g' (avec Perl comme avec GNU Sed v.4).
(*) Utilisation à vérifier dans le style et/ou la classe maison... -- Jacques L'helgoualc'h
Le 16-03-2006, Stephane Chazelas a écrit :
On Thu, 16 Mar 2006 09:26:13 +0000 (UTC), Jacques L'helgoualc'h wrote:
[...]
Avec zsh, je ferais tout simplement:
perl -pi -e 's/\section/\Section/g' ./**/*.tex(.)
Deux lettres de moins à taper avec « sed -i » (GNU Sed, version >=4 :)
Le « + » n'est pas accepté par le find de debian sarge, il lui faut un
« ; », «find» de GNU version 4.1.20
Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ?
Non, au contraire, pourquoi?
Pour ne pas lancer une instance de perl par fichier, quand + ne marche
pas.
xargs n'est pas compatible avec find (a moins d'utiliser des options
specifiques a GNU ou BSD).
Ah oui, c'est plutôt find . -name '*.tex' -type f -print0 | xargs -0 ...
Pour ne remplacer que section (et section*), mais pas sectionmark(*)
et autres, on peut utiliser 's/\sectionb/\Section/g' (avec Perl comme
avec GNU Sed v.4).
(*) Utilisation à vérifier dans le style et/ou la classe maison...
--
Jacques L'helgoualc'h
Le « + » n'est pas accepté par le find de debian sarge, il lui faut un « ; », «find» de GNU version 4.1.20
Ce ne serait pas mieux avec find . -name '*.tex' -type f | xargs ... ?
Non, au contraire, pourquoi?
Pour ne pas lancer une instance de perl par fichier, quand + ne marche pas.
xargs n'est pas compatible avec find (a moins d'utiliser des options specifiques a GNU ou BSD).
Ah oui, c'est plutôt find . -name '*.tex' -type f -print0 | xargs -0 ...
Pour ne remplacer que section (et section*), mais pas sectionmark(*) et autres, on peut utiliser 's/sectionb/Section/g' (avec Perl comme avec GNU Sed v.4).
(*) Utilisation à vérifier dans le style et/ou la classe maison... -- Jacques L'helgoualc'h
Le « + » n'est pas accepté par le find de debian sarge, il lui faut un « ; », «find» de GNU version 4.1.20
Ah oui, mais le + est Unix (specifié par la Single Unix Specification et POSIX) et on est sur fr.comp.os.*unix*, pas fr.comp.os.gnu. Cela dit, les dernieres versions de GNU find doivent l'avoir.
-- Stephane
On Thu, 16 Mar 2006 10:23:12 +0000 (UTC), Jacques L'helgoualc'h wrote:
[...]
Le « + » n'est pas accepté par le find de debian sarge, il lui faut un
« ; », «find» de GNU version 4.1.20
Ah oui, mais le + est Unix (specifié par la Single Unix
Specification et POSIX) et on est sur fr.comp.os.*unix*, pas
fr.comp.os.gnu. Cela dit, les dernieres versions de GNU find
doivent l'avoir.
Le « + » n'est pas accepté par le find de debian sarge, il lui faut un « ; », «find» de GNU version 4.1.20
Ah oui, mais le + est Unix (specifié par la Single Unix Specification et POSIX) et on est sur fr.comp.os.*unix*, pas fr.comp.os.gnu. Cela dit, les dernieres versions de GNU find doivent l'avoir.