Sostituisci tutte le nuove righe nello spazio tranne l'ultima


Risposte:


42

Puoi usare 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
Freddo! Le opzioni -se -dsembrano fatte per questo caso.
mkc,

10

È possibile utilizzare trper sostituire tutte le nuove righe nello spazio e passare l'output sede sostituire l'ultimo spazio a una nuova riga:

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

5

Ri-implementare l'idea di vonbrand in Perl, a condizione che il file sia abbastanza piccolo:

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

+1 perché questo metodo funziona per sostituzioni con caratteri multibyte (al contrario di GNU paste)
myrdd

-1

Qualcosa del genere sed -e 's;\n\(.\); \1;'dovrebbe fare ...


-1

Questo ha funzionato per me.

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

Ciò rimuoverà anche l'ultima riga.
terdon

Non credo, sta funzionando bene. L'hai davvero provato ???
Abhijit

Sì. Hai? Il tuo trcomando sostituisce tutte le nuove righe con spazi e il tuo sedcomando rimuove l'ultimo spazio. Ciò si traduce in un file senza una nuova riga finale e quindi non è ciò che la domanda sta ponendo. A proposito, non ha senso usare int gnel sedcomando. Dal momento che stai usando $, può corrispondere solo alla fine, gè inutile. Inoltre non è necessario sfuggire allo spazio, il `` non fa alcuna differenza.
terdon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.