As maneiras mais rápidas e fáceis de solucionar esse problema:
Quando queremos substituir o novo caractere de linha \n pelo espaço :
xargs < file
xargspossui limites próprios no número de caracteres por linha e no número de todos os caracteres combinados, mas podemos aumentá-los. Detalhes podem ser encontrados executando este comando: xargs --show-limitse, claro, no manual:man xargs
Quando queremos substituir um caractere por outro, exatamente um caractere :
tr '\n' ' ' < file
Quando queremos substituir um caractere por muitos caracteres :
tr '\n' '~' < file | sed s/~/many_characters/g
Primeiro, substituímos os caracteres de nova linha \npor til ~(ou escolhemos outro caractere exclusivo que não está presente no texto) e, em seguida, substituímos os caracteres de til por outros caracteres ( many_characters) e fazemos isso para cada til (sinalizador g).
sedscript entre aspas simples para que o Bash não mexa com ele (já quesed s/\n/ /gchamasedcom dois argumentos, a saber,s/n/e/g); (2) desde que você quer a saída decat file | grep patternser a entrada parased, e não os argumentos parased, você precisa eliminarxargs; e (3) não há necessidadecataqui, poisgreppode usar um nome de arquivo como seu segundo argumento. Então, você deveria ter tentadogrep pattern file | sed 's/\n/ /g'. (Neste caso, não teria funcionado, por razões dadas no link acima, mas agora você sabe o futuro.) #