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