Rimuovi la parola specifica nella variabile


23

In uno bashscript, come posso rimuovere una parola da una stringa, la parola verrebbe memorizzata in una variabile.

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

Risposte:


30

Provare:

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

Questo anche lavorare in 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"

Presuppone che le tue parole siano delimitate da spazi e abbia effetti collaterali che rimuovono gli spazi prima e dopo "$WORDTOREMOVE".


17

Usando la sostituzione della sottostringa bash:

FOO = $ {FOO // $ WORDTOREMOVE /}

// sostituisce tutte le occorrenze della sottostringa ($ WORDTOREMOVE) con il contenuto tra / e}. In questo caso niente.

Per informazioni su questo e altri modi per lavorare con le stringhe in bash, vedere la sezione 10.1. Manipolazione delle stringhe della Guida avanzata di script Bash .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.