Las formas más rápidas y fáciles que conozco para resolver este problema:
Cuando queremos reemplazar el nuevo carácter de línea \n con el espacio :
xargs < file
xargstiene sus propios límites en la cantidad de caracteres por línea y la cantidad de todos los caracteres combinados, pero podemos aumentarlos. Los detalles se pueden encontrar ejecutando este comando: xargs --show-limitsy, por supuesto, en el manual:man xargs
Cuando queremos reemplazar un personaje con otro exactamente un personaje :
tr '\n' ' ' < file
Cuando queremos reemplazar un personaje con muchos personajes :
tr '\n' '~' < file | sed s/~/many_characters/g
Primero, reemplazamos los caracteres de nueva línea \npor tildes ~(o elegimos otro carácter único que no esté presente en el texto), y luego reemplazamos los caracteres de tilde con cualquier otro carácter ( many_characters) y lo hacemos para cada tilde (bandera g).
sedscript entre comillas simples para que Bash no se meta con él (ya quesed s/\n/ /gllamasedcon dos argumentos, a saber,s/n/y/g); (2) ya que desea que la salida decat file | grep patternser la entrada ased, no los argumentos ased, es necesario eliminarxargs; y (3) no es necesariocataquí, ya quegreppuede tomar un nombre de archivo como segundo argumento. Entonces, deberías haberlo intentadogrep pattern file | sed 's/\n/ /g'. (En este caso no habría funcionado, por las razones dadas en el enlace de arriba, pero ahora ya sabes para el futuro.)