Você pode enviar a saída para tr , por exemplo,
grep -oP "x\K(\S\S)") | tr -d '\n'
Isso custa um processo adicional, ou seja, torna o seu programa mais lento. Se isso for um problema, você pode usar sed ou awk .
Eu tenho uma pergunta bem rápida para vocês. Depois de examinar a documentação e o site aqui, fiquei me perguntando se era possível evitar que o grep exibisse cada correspondência na mesma linha.
No meu exemplo, eu preciso pegar uma string no formato \xeb\x1a\x5e\x31\xc0\x88\x46\x07... etc. Eu uso grep -oP "x\K(\S\S)") para obter cada um dos dígitos hexadecimais.
A saída está correta, no entanto, cada correspondência está em sua própria linha. Isso é um problema porque eu preciso alimentar essa saída em outro programa. Então, novamente, existe alguma maneira de colocar cada partida consecutivamente sem nenhum tipo de preenchimento?
Funciona se você alimentá-lo com sed para remover todos os caracteres de nova linha ( \n )?
echo \xeb\x1a\x5e\x31\xc0\x88\x46\x07 | grep -oP "x\K(\S\S)" | sed ':a;N;$!ba;s/\n//g'
Referência: > Como posso substituir uma nova linha (\ n) usando sed?