Remplacer toutes les nouvelles lignes dans l'espace sauf la dernière


38

Comment puis-je remplacer toutes les nouvelles lignes par un espace, à l'exception de la dernière nouvelle ligne? Je peux remplacer toutes les nouvelles lignes dans l'espace, trmais comment puis-je le faire à quelques exceptions près?

Réponses:


42

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

1
Cool! Les options -set -dsemblent être faites pour ce cas.
mkc

10

Vous pouvez utiliser trpour remplacer toutes les nouvelles lignes dans l'espace et transmettre la sortie à sedet remplacer le dernier espace par une nouvelle ligne:

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

5

Ré-implémenter l'idée de vonbrand en Perl, à condition que le fichier soit assez petit:

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

+1 parce que cette méthode fonctionne pour les remplacements avec des caractères multi-octets (par opposition à coller avec GNU)
myrdd

-1

Quelque chose comme sed -e 's;\n\(.\); \1;'devrait faire ...


-1

Cela a fonctionné pour moi.

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

Cela supprimera également la dernière nouvelle ligne.
terdon

Je ne pense pas, cela fonctionne bien. Avez-vous vraiment essayé ???
Abhijit

Oui j'ai. Avez-vous? Votre trcommande remplace toutes les nouvelles lignes par des espaces et votre sedcommande supprime le dernier espace. Cela aboutit à un fichier sans fin de ligne finale et n’est donc pas ce que la question demande. À propos, il n'y a aucun intérêt à utiliser int gdans la sedcommande. Depuis que vous utilisez $, il ne peut correspondre que à la fin, le gest inutile. Vous n'avez pas non plus besoin d'échapper à l'espace, le `` ne fait pas de différence non plus.
terdon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.