Não é uma prática recomendada usar o mesmo arquivo como entrada e saída. O que acontece é que o shell (bash) abre e trunca (o > em seu comando) o arquivo antes de ser lido pelo sed.
Então sed 's/foo/bar/' test > test.out
seria o jeito certo de fazer isso.