Substitua todas as novas linhas no espaço, exceto a última


Respostas:


42

Você pode usar paste -s -d ' ' file.txt:

$ cat file.txt
one line
another line
third line
fourth line

$ paste -s -d ' ' file.txt 
one line another line third line fourth line

1
Legal! As opções -se -dparecem feitas para este caso.
Mkc 8/02

10

Você pode usar trpara substituir todas as novas linhas para o espaço e passar a saída sede substituir o último espaço de volta para uma nova linha:

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'

5

Re-implementar a idéia de vonbrand em Perl, desde que o arquivo é pequeno o suficiente:

perl -p00e 's/\n(?!\Z)/ /g' your_file

Uma vez que este método funciona para substituições com caracteres de bytes múltiplos (em oposição a GNU cole)
myrdd


-1

Isso funcionou para mim.

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

Isso removerá a última nova linha também.
terdon

Acho que não, está funcionando bem. Você realmente tentou isso ???
Abhijit 01/03

Sim, eu tenho. Você já? Seu trcomando substitui todas as novas linhas por espaços e seu sedcomando remove o último espaço. Isso resulta em um arquivo sem uma nova linha final e, portanto, não é o que a pergunta está pedindo. A propósito, não faz sentido usarg em no sedcomando. Como você está usando $, ele pode corresponder apenas no final, o que gé inútil. Você também não precisa escapar do espaço, o `` também não faz diferença.
terdon
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.