A opção -i
faz com que sed
edite o arquivo original. Isso significa que não há saída e, como não há saída, o redirecionamento resulta em um arquivo vazio.
Então, o que você quer é
sed -i '' 's/$/<@string>/' txt.txt
que mudará o original txt.txt
. Ou apenas
sed 's/$/<@string>/' txt.txt > txt2.txt