Değişkendeki belirli kelimeyi kaldır


23

Bir bashkomut dosyasında, bir kelimeyi bir dizeden nasıl kaldırabilirim, sözcük bir değişkende saklanır.

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

Yanıtlar:


30

Deneyin:

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

Bu aynı zamanda çalışmak 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"

Kelimelerinizin alanla sınırlı olduğunu ve boşlukları önce ve sonra kaldıran yan etkiye sahip olduğunu varsayar "$WORDTOREMOVE".


17

Bash alt dize değiştirme kullanma:

FOO = $ {ÖRNEK // $ WORDTOREMOVE /}

//, alt dizenin ($ WORDTOREMOVE) tüm oluşumlarını / ve} arasındaki içerikle değiştirir. Bu durumda hiçbir şey.

Bu ve bash dizeleriyle çalışmanın diğer yolları hakkında bilgi için, bölüm 10.1'e bakın. Kurgulama Strings of Advanced Bash-Komut Rehberi .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.