Dans un bash
script, comment puis-je supprimer un mot d'une chaîne, le mot serait stocké dans une variable.
FOO="CATS DOGS FISH MICE"
WORDTOREMOVE="MICE"
Dans un bash
script, comment puis-je supprimer un mot d'une chaîne, le mot serait stocké dans une variable.
FOO="CATS DOGS FISH MICE"
WORDTOREMOVE="MICE"
Essayer:
$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH
Ce travail aussi ksh93
, mksh
, zsh
.
POSIX:
FOO="CATS DOGS FISH MICE"
WORDTOREMOVE="MICE"
remove_word() (
set -f
IFS=' '
s=$1
w=$2
set -- $1
for arg do
shift
[ "$arg" = "$w" ] && continue
set -- "$@" "$arg"
done
printf '%s\n' "$*"
)
remove_word "$FOO" "$WORDTOREMOVE"
Il suppose que vos mots sont séparés par des espaces et ont des effets secondaires qui suppriment les espaces avant et après "$WORDTOREMOVE"
.
Utilisation du remplacement de la sous-chaîne bash:
FOO = $ {FOO // $ WORDTOREMOVE /}
// remplace toutes les occurrences de la sous-chaîne ($ WORDTOREMOVE) par le contenu entre / et}. Dans ce cas, rien.
Pour plus d'informations à ce sujet et sur d'autres façons de travailler avec des chaînes dans bash, consultez la section 10.1. Manipulation des chaînes du Guide de script Bash avancé .