変数があるとしましょうfoo
。
foo=`echo ab cd ef gh`
あなたがした場合echo foo
、あなたは得るでしょう:
$ echo $foo
ab cd ef gh
それでは、最速の方法からef
始めましょう。$foo
答え1
変数に変数が少なくとも1回含まれていると仮定すると、ef
POSIXly:
$ printf '%s\n' "${foo%ef*}${foo##*ef}"
ab cd gh
bash
、ksh
バリアント(含まれていないposh
)zsh
、およびでは、yash
次のものを使用できます。
$ printf '%s\n' "${foo/ef}"
最初の項目を削除するef
か、"${foo//ef}"
すべての項目を削除します。
答え2
シェルが利用可能パターン交換パターンを削除:
$ foo="ab cd ef gh"
$ echo "${foo//ef}"
ab cd gh
ノート
多くの人は、バックティックを使用することが時代遅れだと思います。一般的な現代的な形式の命令の置き換えはです
$(...)
。バックティックとエコーを使用して生成する
foo
ことは重複します。上記のように、単に文字列を変数に割り当てることができます。何が起こっているのかについてのアイデアを提供するために引数を引用符で囲むことなくechoを使用すると、シェルが実行されます。噴射、文字列を3つの部分に分割し、3つの別々の
echo
引数として提供します。echo
対応するパラメータをスペースで連結します。
答え3
これには2つの方法があります。
uc@SVE1411EGXB:~/shop_app/depot2$ foo=`echo ab cd ef gh`
uc@SVE1411EGXB:~/shop_app/depot2$ echo ${foo/ef}
ab cd gh
または、ストリームエディタAKA ..を使用してnullでsed
検索して置き換えます。"ef"
uc@SVE1411EGXB:~/shop_app/depot2$ echo $foo | sed 's/ef//g'
ab cd gh