[gull] Truc et astuces: Modifier plusieur fichier avec sed
Félix Hauri
felix at f-hauri.ch
Mon Jul 23 14:33:55 CEST 2012
Soit une liste de fichier de languages en javascript:
$ ls lang.*.js
lang.de.js lang.en.js lang.fr.js lang.it.js ...
qui contiennent une chaine par ligne encadrée par des guillemets et qui
sont parfoit en utf-8, parfois en html.
Le but est de les convertir toutes en html, mais pour chacun des fichiers.
(lancer recode directement sur les fichier .js n'est pas une bonne idée ;)
Je m'en suis tiré avec:
$ for file in lang.*.js ;do
echo $file:
cat $file |
recode -f u8..flat |
diff $file -
done |
env LANG=C sed -ne '
/^lang.*js:$/{h};
/^</{x;G;s/:\n< .*"\(.*\)".*$/\t\1/;p;s/\t.*$/:/;x;}
' |
while read file string;do
printf "sed -i '%s' -e 's/%s/%s/'\n" $file "$string" "$(
echo $string|recode u8..html)"
done |
sed 's/\&/\\\&/g'
sed -i 'lang.de.js' -e 's/Hinzufügen/Hinzuf\ügen/'
sed -i 'lang.de.js' -e 's/Geändert/Ge\ändert/'
sed -i 'lang.fr.js' -e 's/Création/Cr\éation/'
... Que je peux piper vers sh (`` | /bin/sh '') après vérification.
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list