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, tr
mais comment puis-je le faire à quelques exceptions près?
bash
shell-script
text-processing
tr
Gilles, arrête de faire le mal
la source
la source
-s
et-d
semblent être faites pour ce cas.Vous pouvez utiliser
tr
pour remplacer toutes les nouvelles lignes dans l'espace et transmettre la sortie àsed
et remplacer le dernier espace par une nouvelle ligne:la source
Ré-implémenter l'idée de vonbrand en Perl, à condition que le fichier soit assez petit:
la source
Quelque chose comme
sed -e 's;\n\(.\); \1;'
devrait faire ...la source
Cela a fonctionné pour moi.
la source
tr
commande remplace toutes les nouvelles lignes par des espaces et votresed
commande 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 intg
dans lased
commande. Depuis que vous utilisez$
, il ne peut correspondre que à la fin, leg
est inutile. Vous n'avez pas non plus besoin d'échapper à l'espace, le `` ne fait pas de différence non plus.