it-swarm.com.de

Entfernen Sie ein bestimmtes Word in der Variablen

Wie kann ich in einem bash -Skript ein Wort aus einer Zeichenfolge entfernen? Das Wort wird in einer Variablen gespeichert.

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

Versuchen:

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

Dies funktioniert auch 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 -- "[email protected]" "$arg"
  done

  printf '%s\n' "$*"
)

remove_Word "$FOO" "$WORDTOREMOVE"

Es wird davon ausgegangen, dass Ihre Wörter durch Leerzeichen getrennt sind und Nebenwirkungen haben, die Leerzeichen vor und nach "$WORDTOREMOVE".

36
cuonglm

Verwenden des Ersatzes für Bash-Teilzeichenfolgen:

FOO = $ {FOO // $ WORDTOREMOVE /}

Das // ersetzt alle Vorkommen des Teilstrings ($ WORDTOREMOVE) durch den Inhalt zwischen/und}. In diesem Fall nichts.

Informationen zu dieser und anderen Möglichkeiten, mit Strings in Bash zu arbeiten, finden Sie im Abschnitt 10.1. Manipulieren von Strings des Advanced Bash-Scripting Guide .

26
John