Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/01/2017, à 21:15

Himeroos

[RESOLU]Commande SED

Bonjour,

J'ai actuellement un soucis avec sed (je ne sais pas très bien utiliser toute sa puissance smile ), je vous explique, j'ai un script qui dans sa globalité va déplacer des fichier d'un point A vers un point B puis vas les décompresser automatiquement, tout fonctionne niquel. Sauf que certain fichier avait un nom pas terrible sur mon pc Windows alors que sur tout mes pc Linux c'est OK. Puis je me suis aperçue que certain caractère emmerder Windows d'où les noms pas beau.

J'aimerais donc avant tout déplacement changer le nom qu'il va prendre j'ai déjà récupérer le nom dans une variable puis j'ai utilisé cette commande qui va supprimer tout les méchants caractère :

i="$(basename "${i%.*}.${i##*.}" | sed "s/[^a-z|0-9 _.]//g")"

Cela fonctionne niquel ça supprime bien les caractère sauf ceux entre crochet, mais je n'aime pas ça je voudrais que au lieu de supprimer ça remplace les caractère (sauf cela [^a-z|0-9 _.]) par un underscore "_"
Avez vous une idée svp?

Dernière modification par Himeroos (Le 31/01/2017, à 22:24)


Ubuntu server 16.04 x64

Hors ligne

#2 Le 31/01/2017, à 21:38

Hizoka

Re : [RESOLU]Commande SED

Salut, c'est la base de sed du coup wink

i="$(basename "${i%.*}.${i##*.}" | sed "s/[^a-z|0-9 _.]/_/g")"
echo "gfdgfd dvcxb -gfdù&é'dssdq" | sed "s/[^a-z|0-9 _.]/_/g"
gfdgfd dvcxb _gfdù_é_dssdq

Dernière modification par Hizoka (Le 31/01/2017, à 21:39)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 31/01/2017, à 21:44

Himeroos

Re : [RESOLU]Commande SED

Bonjour et merci de ta réponse, je me sens idiot j'ai essayé :

i="$(basename "${i%.*}.${i##*.}" | sed "s/[^a-z|0-9 _.]//_/")"

j'avais mis un "/" en trop et je pensais le g inutile du coup ^^
Merci encore à toi. bonne soirée


Ubuntu server 16.04 x64

Hors ligne

#4 Le 31/01/2017, à 22:45

pingouinux

Re : [RESOLU]Commande SED

Bonsoir,
Pour info, tu peux remplacer

"$(basename "${i%.*}.${i##*.}")"

par

"$(basename "$i")"

ou

"${i##*/}"

Hors ligne

#5 Le 31/01/2017, à 23:01

Himeroos

Re : [RESOLU]Commande SED

Bonsoir,
Cette info est la bienvenue tongue ça épure le code. J'allais bientôt y venir.


Ubuntu server 16.04 x64

Hors ligne