Sua melhor aposta é usar printf
. Você tem duas strings e deseja gerá-las com alguma formatação adicional. Isso é exatamente o que o printf
faz.
$ printf "%s @@ %s\n" "$(cat /proc/loadavg)" "$(date)"
Sua tentativa tr
não funciona, pois tr
modifica caracteres , não palavras. Você poderia usá-lo para substituir as novas linhas por um único caractere:
$ ( cat /proc/loadavg; date ) | tr '\n' '@'
... mas não faz exatamente o que você precisa.
Sua sed
tentativa não funciona, pois a nova linha é removida da entrada para sed
(ou seja, sed -n '/\n/p' inputfile
nunca imprime nada).
Ainda é possível fazer isso com sed
se você ler a segunda linha (de date
) com o comando N
editando a primeira linha (que irá colocar uma nova linha entre eles):
$ ( cat /proc/loadavg; date ) | sed 'N;s/\n/ @@ /'
... mas eu pessoalmente preferiria a solução printf
.