[Shell] remplacement de caractères

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.

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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. Contributeur
      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.

      ++
    2. Contributeur
      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 ;-)
  2. Contributeur
    dans ton inbvite de commande tu tape "man sed", et tu lis toute la doc car je ne me souvient plus des options.

    ++
    1. 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}
  3. 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