bash
スクリプトでは、文字列からWordを削除する方法を教えてください。Wordは変数に格納されます。
FOO="CATS DOGS FISH MICE"
WORDTOREMOVE="MICE"
試してください:
$ 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"
の前後のスペースを削除するという副作用があります。
Bash部分文字列置換の使用:
FOO = $ {FOO // $ WORDTOREMOVE /}
//は、サブストリング($ WORDTOREMOVE)のすべての出現箇所を、/と}の間のコンテンツに置き換えます。この場合は何もありません。
これとbashで文字列を操作する他の方法の詳細については、 高度なBashスクリプトガイド のセクション 10.1。文字列の操作 を参照してください。