次のような文字列が与えられた場合
string="val1 val2 val3 val4"
bash 部分文字列置換を使用して、特定の部分文字列とそれに隣接するスペース (存在する場合と存在しない場合があります) を削除するにはどうすればよいですか?
たとえば、これにより余分なスペースが発生します。
val='val2'
string=${string/$val/}
# string = "val1 val3 val4"
私の実際のコードでは、部分文字列が何であるか、または文字列内のどこにあるかを事前に知ることはできないため、先頭または末尾にスペースがあるかどうかは不明です。で行うように、次のようなことをしたかったのですsed
が、もちろんうまくいきませんでした。
val=" *val2 *"
string=${string/$val/ }
# In my fictitious universe, string = "val1 val3 val4"
# In the real world, string = "val1"
ではsed
、 のようなものを使用しますsed -e 's/ *val2 */ /'
が、これらすべてを bash 内から実行したいと考えています。
パターンに 0 個以上のスペース + 'val2' + 0 個以上のスペースが含まれるように部分文字列を定義する方法はありますか?