चर में विशिष्ट शब्द निकालें


23

एक bashस्क्रिप्ट में, मैं किसी शब्द को स्ट्रिंग से कैसे हटा सकता हूं, शब्द को एक चर में संग्रहीत किया जाएगा।

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

जवाबों:


30

प्रयत्न:

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

यह भी में काम करते हैं 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"

यह मानता है कि आपके शब्द स्पेस सीमांकित हैं और इसके साइड इफेक्ट हैं जो पहले और बाद के रिक्त स्थान को हटाते हैं "$WORDTOREMOVE"।


17

बैश सबस्ट्रिंग प्रतिस्थापन का उपयोग करना:

Foo = $ {FOO // $ WORDTOREMOVE /}

// सबस्ट्रिंग ($ WORDTOREMOVE) की सभी घटनाओं को / और} के बीच की सामग्री से बदल देता है। इस मामले में कुछ भी नहीं।

इस और अन्य तरीकों के बारे में जानकारी के लिए, बाशिंग में तार के साथ काम करने के लिए, अनुभाग 10.1 देखें। जोड़ तोड़ स्ट्रिंग्स की उन्नत बैश-पटकथा गाइड ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.