Eliminar palabra específica en variable


23

En un bashscript, ¿cómo puedo eliminar una palabra de una cadena? La palabra se almacenaría en una variable.

FOO="CATS DOGS FISH MICE"
WORDTOREMOVE="MICE"

Respuestas:


30

Tratar:

$ printf '%s\n' "${FOO//$WORDTOREMOVE/}"
CATS DOGS FISH

Esto también funciona en ksh93, mksh, zsh.


POSIXLY:

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"

Asume que sus palabras están delimitadas por espacios y tiene efectos secundarios que eliminan espacios antes y después "$WORDTOREMOVE".


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.