GNU/Linux >> Tutoriels Linux >  >> Linux

Remplacer les espaces par des traits de soulignement via BASH

$ a="hello world"
$ echo ${a// /_}
hello_world

Selon bash(1):

${parameter/pattern/string}

Substitution de motifs. Le modèle est développé pour produire un modèle comme dans l'expansion du nom de chemin. Le paramètre est développé et la correspondance la plus longue du motif par rapport à sa valeur est remplacée par une chaîne. Si le motif commence par /, toutes les correspondances du motif sont remplacées
avec ficelle. Normalement, seul le premier match est remplacé. Si le modèle commence par #, il doit correspondre au début de la valeur développée du paramètre. Si le motif commence par %, il doit correspondre à la fin de la valeur développée du paramètre. Si la chaîne est nulle, les correspondances de motif sont supprimées et le motif suivant peut être omis. Si le paramètre est @ ou *, l'opération de substitution est appliquée à chaque paramètre positionnel tour à tour, et le développement est la liste résultante. Si le paramètre est une variable de tableau indicée par @ ou *, l'opération de substitution est appliquée à chaque membre du tableau tour à tour, et le développement est la liste résultante.


Vous pouvez essayer ce qui suit :

str="${str// /_}"

Linux
  1. Bash -c avec des paramètres positionnels ?

  2. Remplacer les lignes correspondant à un motif par des lignes d'un autre fichier dans l'ordre ?

  3. Remplacer la nouvelle ligne par Nul ?

  4. Pourquoi Bash ne stocke-t-il pas les commandes commençant par des espaces ?

  5. nom de base avec des espaces dans un script bash ?

Remplacer du par de la poussière sous Linux

Qu'est-ce que Git Bash ? Travailler avec les commandes Git Bash

Comment remplacer les espaces dans les noms de fichiers par des traits de soulignement sur le shell Linux

Remplacement d'une sous-chaîne par une autre chaîne dans Bash

Arrondir les nombres avec bc dans Bash

Correspondance de modèle de script bash