sed et les caracteres de ponctuation

Le
MadStef
Bonjour/soir,

Un souci avec sed (GNU sed version 4.1.5)

Je récupere des fichiers avec des noms qui contiennent des espaces,
des "'", des ",", des "/" et autres plaisanteries

Je passe un coup de sed pour remettre ces noms sous une forme
"normale" cad les espaces sont remplacés par des _ et les autres
signes par des -

Je fais un truc du genre

echo 'High `N` Dry' | sed s/`/-/g | sed s/ /_/g
High_-N-_Dry

je regardais aussi du coté de :

echo 'High `N` Dry' | sed s/[[:punct:]]/-/g | sed s/ /_/g qui
fonctionne aussi mais je calle sur une syntaxe plus propre

Une idée pour faire plus clean ?

Merci

Stef
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane Chazelas
Le #771237
2007-09-25, 12:20(-07), MadStef:
Bonjour/soir,

Un souci avec sed (GNU sed version 4.1.5)

Je récupere des fichiers avec des noms qui contiennent des espaces,
des "'", des ",", des "/" et autres plaisanteries...

Je passe un coup de sed pour remettre ces noms sous une forme
"normale" cad les espaces sont remplacés par des _ et les autres
signes par des -

Je fais un truc du genre

echo 'High `N` Dry' | sed s/`/-/g | sed s/ /_/g
High_-N-_Dry

je regardais aussi du coté de :

echo 'High `N` Dry' | sed s/[[:punct:]]/-/g | sed s/ /_/g qui
fonctionne aussi mais je calle sur une syntaxe plus propre

Une idée pour faire plus clean ?
[...]


tr '[:punct:]' '[-*]' | tr ' ' _

ou

sed 's/[[:punct:]]/-/g; s/[[:blank:]]{1,}/_/g'

Mais pour renommer ces fichiers, j'utiliserais plutot zsh et son
zmv:

autoload -U zmv
zmv -n '*' '${${f//[[:punct:]]/-}//[[:blank:]]##/_}'

Enlever le "-n" when happy.

--
Stéphane

MadStef
Le #779928
On 25 sep, 21:39, Stephane Chazelas
2007-09-25, 12:20(-07), MadStef:

Bonjour/soir,

Un souci avecsed(GNUsedversion 4.1.5)

Je récupere des fichiers avec des noms qui contiennent des espaces,
des "'", des ",", des "/" et autres plaisanteries...

Je passe un coup desedpour remettre ces noms sous une forme
"normale" cad les espaces sont remplacés par des _ et les autres
signes par des -

Je fais un truc du genre

echo 'High `N` Dry' |seds/`/-/g |seds/ /_/g
High_-N-_Dry

je regardais aussi du coté de :

echo 'High `N` Dry' |seds/[[:punct:]]/-/g |seds/ /_/g qui
fonctionne aussi mais je calle sur une syntaxe plus propre

Une idée pour faire plus clean ?


[...]

tr '[:punct:]' '[-*]' | tr ' ' _

ou

sed's/[[:punct:]]/-/g; s/[[:blank:]]{1,}/_/g'

Mais pour renommer ces fichiers, j'utiliserais plutot zsh et son
zmv:

autoload -U zmv
zmv -n '*' '${${f//[[:punct:]]/-}//[[:blank:]]##/_}'

Enlever le "-n" when happy.

--
Stéphane


Ooops... j'avais un peu zappé la réponse : mais elle m'a été tres
utile...

Merci aussi pour zmv que je connaissais pas ;)

@+

MadStef


Publicité
Poster une réponse
Anonyme