Remplacer les caractères spéciaux et accentuées dans un script bash.sh
Par PlaceOweb le vendredi, septembre 2 2016, 08:16 - Système - Lien permanent
Afin de nommer correctement mes branches git, j'ai du remplacer les caractères spéciaux et accentuées à travers un script bash.sh sous le git bash windows.
Voici le script qui :
- transforme les lettres accentuées en lettres sans accent
- transforme tout ce qui n'est pas alphanumérique 0-9A-Za-z en -
- remplace les multi - en un seul -
#!/bin/bash
str1="©«°»¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜ_ok ! | [et] {la} (suite) \/ éèèë fonctionne ^1.2,3€^ ?..."
echo $str1
str2=$(sed \
-e s/[\\xc2\\x80\-\\xc2\\xbf]/-/g \
-e s/[\\xc3\\x80\-\\xc3\\x86]/A/g \
-e s/[\\xc3\\x87]/C/g \
-e s/[\\xc3\\x88\-\\xc3\\x8b]/E/g \
-e s/[\\xc3\\x8c\-\\xc3\\x8f]/I/g \
-e s/[\\xc3\\x90\-\\xc3\\x91]/-/g \
-e s/[\\xc3\\x92\-\\xc3\\x98]/O/g \
-e s/[\\xc3\\x99\-\\xc3\\x9c]/U/g \
-e s/[\\xc3\\x9d\-\\xc3\\x9f]/-/g \
-e s/[\\xc3\\xa0\-\\xc3\\xa6]/a/g \
-e s/[\\xc3\\xa7]/c/g \
-e s/[\\xc3\\xa8\-\\xc3\\xab]/e/g \
-e s/[\\xc3\\xac\-\\xc3\\xaf]/i/g \
-e s/[\\xc3\\xb0]/-/g \
-e s/[\\xc3\\xb1]/n/g \
-e s/[\\xc3\\xb2\-\\xc3\\xb8]/o/g \
-e s/[\\xc3\\xb9\-\\xc3\\xbc]/u/g \
-e s/[\\xc3\\xbd\-\\xc3\\xbf]/-/g \
<<< $str1)
echo $str2
str3=$(sed "s/[^[:alnum:]-]/-/g" <<< $str2)
echo $str3
str4=$(sed -e "s/--*/-/g" <<< $str3)
echo $str4
©«°»¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜ_ok ! | [et] {la} (suite) \/ éèèë fonctionne ^1.2,3€^ ?...
-----AAAAAAACEEEEIIII--OOOOOOOUUUU_ok ! | [et] {la} (suite) \/ eeee fonctionne ^1.2,3€^ ?...
-----AAAAAAACEEEEIIII--OOOOOOOUUUU-ok------et---la---suite-----eeee-fonctionne--1-2-3-------
-AAAAAAACEEEEIIII-OOOOOOOUUUU-ok-et-la-suite-eeee-fonctionne-1-2-3-
- UTF-8 encoding table and Unicode characters
- Remplacer des caractères spéciaux avec sed
- Can I use sed to manipulate a variable in bash?
Mais il manque aussi les caractères HTML, qu'il faut decode html entities :
Mais sans langage externe, comment convertir et décoder les caractères HTML ? Par défaut, notre git bash, n'a pas : recode, w3m
Solved-Bash script to convert from HTML entities to characters-bash
A sed script based on the list of entities so it must handle most of the entities. SED Commands to replace HTML entities to characters
sed -f htmlentities.sed < file.html
# ASCII printable characters
s/ / /g
s/!/!/g
s/"/"/g
s/#/#/g
s/$/$/g
s/%/%/g
s/'/'/g
s/(/(/g
s/)/)/g
# ISO-8859-1 characters
s/À/À/g
s/À/À/g
s/à/à/g
s/à/à/g
Replacing HTML ascii codes via a bash script?
An alternative is to pipe through a web browser, such as:
echo '!' | w3m -dump -T text/html