111 votes

Comment supprimer tous les espaces blancs d'un fichier texte donné ?

Je veux supprimer tous les espaces blancs d'un fichier texte donné. Y a-t-il une commande shell disponible pour cela ? Ou, comment utiliser sed à cette fin.

Je veux quelque chose comme ci-dessous :

$ cat hello.txt | sed ....

J'ai essayé ceci : cat hello.txt | sed 's/ //g' Mais il ne supprime que les espaces, pas les tabulations.

195voto

Paulo Scardine Points 17518
$ man tr
NAME
    tr - translate or delete characters

SYNOPSIS
    tr [OPTION]... SET1 [SET2]

DESCRIPTION
   Translate, squeeze, and/or delete characters from standard 
   input, writing to standard output.

Afin d'effacer tous les espaces, y compris les nouvelles lignes, vous pouvez essayer :

cat file.txt | tr -d " \t\n\r" 

Vous pouvez également utiliser les classes de caractères définies par tr (crédits à htompkins commentaire) :

cat file.txt | tr -d "[:space:]"

Par exemple, afin d'effacer uniquement l'espace blanc horizontal :

cat file.txt | tr -d "[:blank:]"

32voto

Lucie G Points 351

Beaucoup plus simple à mon avis :

sed -r 's/\s+//g' filename

18voto

Umae Points 91

Je pense que vous pouvez utiliser sed pour effacer l'espace tout en ne perdant pas d'informations, comme le passage de à une autre ligne.

cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'

11voto

keyser Points 5842

Essayez ça :

sed -e 's/[\t ]//g;/^$/d' 

(trouvé aquí )

La première partie supprime tous les onglets ( \t ) et les espaces, et la deuxième partie supprime toutes les lignes vides

5voto

glenn jackman Points 69748

Si vous voulez supprimer TOUTES les espaces, même les retours à la ligne :

perl -pe 's/\s+//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