[Shell] remplacement de caractères

Fermé
seinto28 - 18 avril 2005 à 18:18
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 1 mai 2011 à 21:23
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

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 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
19 avril 2005 à 11:49
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 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
1 mai 2011 à 21:23
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 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
18 avril 2005 à 19:22
dans ton inbvite de commande tu tape "man sed", et tu lis toute la doc car je ne me souvient plus des options.

++
0
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
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