Question: Sous GNU, comment supprimer rapidement les sauts de ligne d'un fichier, c'est-à-dire fusionner les lignes en une seule ?
Réponse: xargs < nomdefichier
Explication:
0. xargs a pour fonction de lire le texte donné sur son entrée standard et d'appeler une commande ayant pour arguments le texte en question. Par exemple: echo "/tmp" | xargs ls -l. Ici, xargs lira "/tmp" sur son entrée standard, et appellera donc ls -l /tmp.
1. Caractéristique notable de xargs: les sauts de ligne éventuels de l'entrée standard sont interprétés comme séparateurs d'arguments pour forger la commande finale, au même titre que les espaces.
2. Seconde caractéristique: en l'absence de commande passée à xargs, c'est "/bin/echo" qui est utilisé. On aurait pu donc écrire xargs echo < nomdefichier, ou encore le pléonasme fréquent: cat nomdefichier | xargs echo, mais c'est quand même moins joli :)
# Remarques post-modération
Posté par davux (site web personnel) . Évalué à 1.
2. Comme on vient de me faire remarquer, ça marche seulement si les lignes ne sont pas trop "bizarres". Par exemple si elles contiennent des guillemets simples ou doubles ça marche pas. Autre solution: un bête "tr":
tr '\n' ' ' < nomdefichier
[^] # Ou plus simplement..
Posté par knarf2 . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.