web-dev-qa-db-fra.com

Remplacer tous les retours à la ligne à l'exception du dernier

Comment puis-je remplacer tous les sauts de ligne par de l'espace sauf le dernier saut de ligne. Je peux remplacer tous les retours à la ligne en utilisant tr mais comment puis-je le faire avec quelques exceptions?

41
user59930

Vous pouvez utiliser 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
46
grebneke

Vous pouvez utiliser tr pour remplacer tous les retours à la ligne dans l'espace et transmettre la sortie à sed et remplacer le dernier espace par un retour à la ligne:

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

Réimplémentation idée de vonbrand en Perl, à condition que le fichier soit suffisamment petit:

Perl -p00e 's/\n(?!\Z)/ /g' your_file
5
Joseph R.