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
wfile
shall 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