Como você está usando uma única expressão sed , tudo o que segue depois do w (incluindo o } ) é interpretado como o nome wfile :
The argument
wfileshall terminate the editing command.
Você pode ver isso se adicionar um segundo comando } , por exemplo como:
sed -e '/my regex here/{w '"$file2"';d;}' -e '}' $file1
, as linhas correspondentes a my regex here serão salvas em um arquivo chamado whatever;d;} , em que whatever é o que quer que $file1 expanda para.
A sintaxe correta é através de comandos separados, com várias expressões:
sed -e '/my regex here/{w '"$file1" -e 'd' -e '}' $file2
ou um comando por linha:
sed '/my regex here/{
w '"$file1"'
d
}
' $file2