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
xargs
possui 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-limits
e, 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 \n
por 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
).
sed
script entre aspas simples para que o Bash não mexa com ele (já quesed s/\n/ /g
chamased
com dois argumentos, a saber,s/n/
e/g
); (2) desde que você quer a saída decat file | grep pattern
ser a entrada parased
, e não os argumentos parased
, você precisa eliminarxargs
; e (3) não há necessidadecat
aqui, poisgrep
pode 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.) #