O problema é que tanto o shell quanto o sed
interpretam as barras invertidas. Você pode conseguir sed
para fazer isso corretamente, mas eu recomendaria simplesmente usar uma ferramenta diferente, por exemplo, Perl:
#!/bin/bash
export var1="foo\ bar" ## The export allows Perl to access the variable as $ENV{var1}
var2="baz"
var3="$var1 $var2"
# extract "foo\ bar" from "foo\ bar baz"
var4='echo $var3 | perl -ne '$var1=quotemeta($ENV{var1}); s/$var1//; print''
echo "$var4"
O exemplo acima usa a função quotemeta
do Perl que escapa de todos os caracteres não-ASCII, permitindo que o regex corresponde corretamente a barra invertida.
Finalmente, por que você quer fazer isso? Você realmente precisa coincidir com o \
ou você está tentando corresponder espaços em seqüências de bash? Existem maneiras mais fáceis, se assim for.