[gull] Truc et astuces: Modifier plusieur fichier avec sed

Cédric Bouvier cbouvi at gmail.com
Mon Jul 23 14:53:54 CEST 2012


Le Monday 23 July 2012, à 14 heures 33, Félix Hauri écrivait :
> 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\&uuml;gen/'
> sed -i 'lang.de.js' -e 's/Geändert/Ge\&auml;ndert/'
> sed -i 'lang.fr.js' -e 's/Création/Cr\&eacute;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
> _______________________________________________
> gull mailing list
> gull at forum.linux-gull.ch
> http://forum.linux-gull.ch/mailman/listinfo/gull

Je ne suis pas sûr d'avoir tout compris, mais il doit y avoir plus
simple, non ?

(apt-get install libhtml-parser-perl)
perl -MHTML::Entities -Cio -pi.bak -e '$_=encode_entities($_, "\200-\377")' *.js


-- 
C é d r i c   B o u v i e r


More information about the gull mailing list