जवाबों:
प्रयत्न:
$ 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"
।
बैश सबस्ट्रिंग प्रतिस्थापन का उपयोग करना:
Foo = $ {FOO // $ WORDTOREMOVE /}
// सबस्ट्रिंग ($ WORDTOREMOVE) की सभी घटनाओं को / और} के बीच की सामग्री से बदल देता है। इस मामले में कुछ भी नहीं।
इस और अन्य तरीकों के बारे में जानकारी के लिए, बाशिंग में तार के साथ काम करने के लिए, अनुभाग 10.1 देखें। जोड़ तोड़ स्ट्रिंग्स की उन्नत बैश-पटकथा गाइड ।