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

7voto

loganaayahee Points 182

Vous pouvez éditer le fichier dans vim :

$ vim inputfile
:%s/\n//g

5voto

user2494262 Points 1

Utiliser

head -n 1 filename | od -c 

pour savoir QUEL est le caractère incriminé. puis utiliser

tr -d '\n' <filename

pour LF

tr -d '\r\n' <filename

pour CRLF

4voto

un5t0ppab13 Points 55

Utilisez sed avec Classes POSIX

Cela supprimera toutes les lignes contenant uniquement des espaces (espaces et tabulations).

sed '/^[[:space:]]*$/d'

Prends juste ce avec quoi tu travailles et dirige-le vers ce

Exemple

cat filename | sed '/^[[:space:]]*$/d'

3voto

Leon li Points 2431

J'ai eu le même problème aujourd'hui, c'est très facile dans vim ou nvim, vous pouvez utiliser gJ pour joindre les lignes. Pour votre cas d'utilisation, il suffit de faire

99gJ

cela permettra de joindre toutes vos 99 lignes. Vous pouvez ajuster le nombre 99 selon les besoins, en fonction du nombre de lignes à joindre. Si vous ne joignez que 1 la ligne, alors seulement gJ est suffisant.

2voto

carlmund Points 1

Utilisation de l'homme 1 ed :

# cf. http://wiki.bash-hackers.org/doku.php?id=howto:edit-ed 
ed -s file <<< $'1,$j\n,p'  # print to stdout 
ed -s file <<< $'1,$j\nwq'  # in-place edit

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