Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sed et les caracteres de ponctuation

2 réponses
Avatar
MadStef
Bonjour/soir,

Un souci avec sed (GNU sed version 4.1.5)

Je r=E9cupere 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=E9s 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=E9 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=E9e pour faire plus clean ?

Merci

Stef

2 réponses

Avatar
Stephane Chazelas
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

Avatar
MadStef
On 25 sep, 21:39, Stephane Chazelas wrote:
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