Comment puis-je supprimer tous les retours à la ligne (\n) à l'aide de sed?
J'ai essayé de supprimer tous les retours à la ligne dans un tube comme ceci:
(echo foo; echo bar) | sed -e :a -e N -e '$!ba' -e 's/\n//g' | hexdump -C
Quels résultats sur debian squeeze:
00000000 66 6f 6f 20 62 61 72 0a |foo bar.|
00000008
Pas de retrait de la fuite de saut de ligne.
tr -d '\n'
comme dans Comment puis-je supprimer les retours à la ligne à partir d'un fichier texte? fonctionne très bien mais n'est pas sed.
la différence entre les questions est seulement que pour les autres, il peut être acceptable de laisser à l'arrière de saut de ligne.
OriginalL'auteur j.l. | 2011-07-13
Vous devez vous connecter pour publier un commentaire.
Désolé, ne peut pas être fait à l'aide de sed, veuillez consulter:
http://sed.sourceforge.net/sedfaq5.html#s5.10
et une discussion ici: http://objectmix.com/awk/26812-sed-remove-last-new-line-2.html
Ressemble sed va ajouter le \n si elle est présente comme le dernier caractère.
OriginalL'auteur Kevin Burton
Si vous souhaitez supprimer le dernier
\n
vous avez besoin d'un utilitaire externe, ou d'utiliser, par exemple,awk
.devrait fonctionner.
OriginalL'auteur Zsolt Botykai
clairement pas, mais elle fait ce que l'OP veut.
Non, l'OP lui-même introduit un moyen de le faire avec
tr
et expliqué que ce n'est pas unsed
-solution. Il est évident, qu'il n'est pas intéressé à unawk
-réponse.OriginalL'auteur glenn jackman
Comparer:
(echo foo; echo bar) | sed -e :a-e N -e '$!ba' -e 's/\n//g' | hexdump-C
avec
(echo foo; echo bar) |tr -d '\n' | hexdump-C
et puis avec
echo foo; echo bar) | hexdump-C | sed -e :a-e N -e '$!ba' -e 's/\n//g'
OriginalL'auteur user2591335
Si
foo
etbar
ne sont pas susceptibles de contenir de nouvelles lignes, alors vous devez être prudent que(echo foo; echo bar)
va ajouter une nouvelle ligne après chaque
echo
(echo -n foo; echo -n bar)
ne sera pas ajouter une nouvelle ligne à la fin de la sortie.
Donc peut-être que vous n'avez pas besoin de sed pour supprimer des lignes nouvelles à tous, même si elle n'a supprimer la fin des lignes.
OriginalL'auteur Tim
vous pouvez également essayer :
(echo foo; echo bar) | xargs echo -n
sorties exactement la même, sed ne fait rien ici.OriginalL'auteur GOTROK