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

33

Como posso substituir todas as novas linhas com espaço, exceto a última nova linha. Posso substituir toda a nova linha pelo espaço usando tr , mas como posso fazê-lo com algumas exceções?

    
por Gilles 08.02.2014 / 21:36

5 respostas

35

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
    
por 08.02.2014 / 22:40
8

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

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'
    
por 08.02.2014 / 21:46
4

Reimplemente a ideia de vonbrand em Perl, desde que o arquivo seja pequeno o suficiente:

perl -p00e 's/\n(?!\Z)/ /g' your_file
    
por 09.02.2014 / 02:17
-1

Algo como sed -e 's;\n\(.\); ;' deve fazer ...

    
por 08.02.2014 / 21:50
-1

Isso funcionou para mim.

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space
    
por 29.02.2016 / 09:01