... | 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.