web-dev-qa-db-fra.com

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

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

Je veux quelque chose comme ci-dessous:

$ chat hello.txt | sed ....

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

48
Lunar Mushrooms
$ 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.

Pour 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 de htompkins comment):

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

Par exemple, pour effacer uniquement les espaces blancs horizontaux:

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

Beaucoup plus simple à mon avis:

sed -r 's/\s+//g' filename
14
Lucie G

Je pense que vous pouvez utiliser sed pour effacer l’espace sans perdre des informations telles que changer de En une autre ligne.

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

Si vous souhaitez supprimerTOUSespaces, même les nouvelles lignes:

Perl -pe 's/\s+//g' file
3
glenn jackman

Mec, Juste python test.py dans votre terminal.

f = open('/home/hduser/Desktop/data.csv' , 'r')

x = f.read().split()
f.close()

y = ' '.join(x)
f = open('/home/hduser/Desktop/data.csv','w')
f.write(y)
f.close()
2
Agnibesh Chauhan

Essaye ça:

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

(trouvé ici )

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

2
keyser

Essaye ça:

tr -d " \t" <filename

Voir la page de manuel tr (1) pour plus de détails.

1
user3653982

C'est probablement la manière la plus simple de le faire:

sed -r 's/\s+//g' filename > output
mv ouput filename
1
Gorton Fishman

Le moyen le plus simple pour moi ->

        echo "Hello my name is Donald" | sed  s/\ //g
0
mminski

hmm ... semble que quelque chose de l'ordre de sed -e "s/[ \t\n\r\v]//g" < hello.txt devrait être dans le bon stade (semble fonctionner sous cygwin dans tous les cas).

0
Jerry Coffin

Cette réponse est semblable à d’autres, cependant, certaines personnes se plaignant que la sortie est dirigée vers STDOUT, je vais simplement suggérer de la rediriger vers le fichier d’origine et de l’écraser. Je ne suggérerais jamais cela normalement, mais parfois des travaux rapides et sales. 

cat file.txt | tr -d " \t\n\r" > file.txt
0
Omar Quaye