PDA

Afficher la version complète : [Réglé] incrémentation en bash (ou autre) ?



batewa
10/06/2019, 15h27
Bonjour,

Je transforme des fichiers .tex en fichiers .html.

Pour ça, j'ai un script bash qui me supprime les 12 premières lignes et les 6 dernières du fichier .tex puis un deuxième script qui remplace les balises tex par des balises html.

Tout ça fonctionne très bien fichier par fichier. Mais j'aimerais pouvoir traiter tous les fichiers d'un même répertoire en une seule fois.

Mes fichiers tex se nomment 01.tex, 02.tex, 03.tex ... les fichiers html se nomment pareillement, seule l'extension change.

Mon script :


#!/bin/bash

# conversion d'un fichier tex en fichier html

cat 01.tex | sed "1,12d" | cat > file.bak ;
tac file.bak | sed "1,6d" | tac > 01.html ;
rm file.bak ;

En gros, j'aimerais un truc qui s'applique à tous les fichiers tex d'un répertoire en conservant le nom du fichier et en changeant seulement l'extension.

Si quelqu'un peut m'aiguiller dans les arcanes des boucles for ou while ou autres...

Merci. :)

sogal
10/06/2019, 17h04
# Pour chacun des fichiers .tex présents dans le répertoire où l'on se trouve
for f in *.tex
# Appliquer ce qui suit
do
# On calcule le nombre total de ligne du fichier
NB_LINES=$(wc -l $f | cut -d" " -f1)
# On affiche toutes les lignes du fichier à l'exception des 6 dernières puis on supprime les 12 premières de ce résultat
# qu'on balance dans un fichier portant le nom du fichier .tex en cours de traitement, mais sans son extension et on y ajouter
# l'extension .html
cat $f | head -n $(( $NB_LINES - 6 )) | sed '1,12d' > ${f%%.*}.html
# On a fini
done

batewa
10/06/2019, 18h16
Grand merci Maître sogal, ça fait exactement ce dont j'ai besoin. :)

Plus qu'à étudier ça de près pour pouvoir le modifier si nécessaire.