[Shell] remplacement de caractères

seinto28 -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour a tous,

Je voulais savoir comment je pouvais faire pour remplacer toutes les occurences d' un caractère précis dans une chaine de caractère en ligne de commande dans un terminal shell.
Par exemple convertir tous les noms d'un repertoire, tous les espaces par des tirets.
Je pense qu'il faut utiliser la commande replace mais je n'arrive pas a la faire fonctionner.

Merci d'avance pour vos réponses.
A voir également:

3 réponses

raph
 
Hello,

Il y a plus imple,

tu fé un echo de ton nom fichier puis tu redirige la sortie standard vers un tr :

echo "35454+354354+354+354" | tr "+" " "
-> 35454 354354 354 354

bye
1
kij_82 Messages postés 4260 Statut Contributeur 857
 
Plus simple je ne suis pas sur, il n'aurait pas créé une commande shell expres sinon ? enfin c'est juste une remarque et non une critique car c'est justement ca qui est bien en shell, c'est que tu as toujours plusieur possibilité pour faire ce que tu souhaite.

++
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
sed, c'est bien, c'est puissant, mais ce n'est pas standard... J'ai déjà eu des linux sans et j'ai déjà rencontré des problèmes de compatibilité entre les version de sed.
Pour un truc aussi simple, je pense que tr suffit largement. Sinon, il y a aussi awk ;-)
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
dans ton inbvite de commande tu tape "man sed", et tu lis toute la doc car je ne me souvient plus des options.

++
0
Nadine
 
sinon ${variable/pattern/string} remplace la pus longue correspondance (matching) de pattern dans variable par string
Mais ça ça ne remplace que le premier match. Si tu veux le faire sur toutes les occurrences:
${variable//pattern/string}
0
seinto28
 
Merci a vous deux,

Je vais fouiller un peu sed car ça a l'air assez complexe au premier abord et je ne connais pas du tout mais apparemment, c'est assez puissant, peut-etre plus adapté à ce que je veux faire.
Si je ne trouve pas, je me rabattrais sur tr.
Merci,

A bientot
0