... | sed 's/\(~@~\)*$//'
para remover qualquer número de ~@~ no final da linha (supondo, é claro, que \n em sua amostra represente a nova linha de finalização de linha, e não uma barra invertida literal e N minúsculo.)
ou em sed s que suportam -E para expressões regulares estendidas:
... | sed -E 's/(~@~)+$//'
ou você pode usar awk -F'~@~' e manipular os campos necessários ao mesmo tempo.