200 votes

Comment supprimer les retours à la ligne d'un fichier texte ?

J'ai les données suivantes, et je dois les mettre sur une seule ligne.

J'ai ça :

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;

J'ai besoin de ça :

22791;14336;22821;34653;21491;25522;33238;

EDITAR

Aucune de ces commandes ne fonctionne parfaitement.

La plupart d'entre eux laissent les données ressembler à ceci :

22791

;14336

;22821

;34653

;21491

;25522

1voto

peak Points 71

En supposant que vous ne voulez conserver que les chiffres et les points-virgules, ce qui suit devrait faire l'affaire en supposant qu'il n'y a pas de problèmes majeurs d'encodage, bien que cela supprime également le tout dernier "newline" :

$ tr -cd ";0-9"

Vous pouvez facilement modifier ce qui précède pour inclure d'autres caractères, par exemple si vous souhaitez conserver les points décimaux, les virgules, etc.

1voto

Mohammad AbuShady Points 7143

J'ai généralement ce cas d'utilisation lorsque je copie un bout de code depuis un fichier et que je veux le coller dans une console sans ajouter de nouvelles lignes inutiles, j'ai fini par faire un alias bash
( je l'ai appelé oneline si vous êtes curieux )

xsel -b -o | tr -d '\n' | tr -s ' ' | xsel -b -i
  • xsel -b -o lit mon presse-papiers

  • tr -d '\n' supprime les nouvelles lignes

  • tr -s ' ' supprime les espaces récurrents

  • xsel -b -i rep rep repousse ceci sur mon presse-papiers

après cela, je collerais le nouveau contenu du presse-papiers dans oneline dans une console ou autre.

0voto

ShinTakezou Points 5603

Je le ferais avec awk, par exemple.

awk '/[0-9]+/ { a = a $0 ";" } END { print a }' file.txt

(un inconvénient est que a est "accumulé" en mémoire).

EDITAR

J'ai oublié printf ! Donc aussi

awk '/[0-9]+/ { printf "%s;", $0 }' file.txt

ou mieux encore, ce qu'on lui a déjà donné dans les autres ans en utilisant awk.

0voto

Eduard Florinescu Points 1586

Vous passez à côté de la réponse la plus évidente et la plus rapide, surtout lorsque vous devez le faire dans l'interface graphique afin de corriger un retournement de mot bizarre.

  • Ouvrir gedit

  • Entonces Ctrl + H puis mettre dans le Find boîte de texte \n et en Replace with un espace vide puis remplir la case à cocher Regular expression et voilà.

-1voto

Emacs Points 373
sed 's/\n//g' file

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X