web-dev-qa-db-fra.com

supprime les espaces de fin de ligne sous linux

j'ai un fichier dans lequel je veux supprimer un espace blanc à la fin de la ligne test.txt est comme suit (il y a un espace blanc à la fin de la ligne.

ath-miRf10005-akr 
ath-miRf10018-akr 
ath-miRf10019-akr
ath-miRf10020-akr 
ath-miRf10023-akr
ath-miRf10024-akr 

j'ai utilisé sed 's/$\s//' mais cela ne fonctionne pas.

28
aksg24

Utilisez un simple * ou [:blank:]* vierge pour supprimer tous les espaces possibles à la fin de la ligne:

sed 's/ *$//' file

En utilisant la classe [:blank:], vous supprimez des espaces et des tabulations:

sed 's/[[:blank:]]*$//' file

Notez que ceci est POSIX, donc compatible à la fois dans GNU sed et BSD.

Pour seulement GNU sed, vous pouvez utiliser l'extension GNU \s* pour faire correspondre les espaces et les tabulations, comme décrit dans Réponse de BaBL86 . Voir les spécifications POSIX sur Expressions rationnelles de base .


Essayons-le avec un simple fichier composé uniquement de lignes, deux avec seulement des espaces et le dernier également avec des tabulations:

$ cat -vet file
hello   $
bye   $
ha^I  $     # there is a tab here

Supprimer uniquement les espaces:

$ sed 's/ *$//' file | cat -vet -
hello$
bye$
ha^I$       # tab is still here!

Supprimer les espaces et les onglets:

$ sed 's/[[:blank:]]*$//' file | cat -vet -
hello$
bye$
ha$         # tab was removed!
36
fedorqui

Essaye ça:

sed -i 's/\s*$//' youfile.txt
16
BaBL86
sed -i 's/[[:blank:]]\{1,\}$//' YourFile

[: blank:] est pour l'espace, onglet principalement et {1,} pour exclure "pas d'espace à la fin" du processus de substitution (pas d'impact significatif significatif si la ligne est courte et le fichier est petit)

2
NeronLeVelu

Si vos lignes sont exactement telles que vous les décrivez (pas d'espaces de début ou d'imbrication), les éléments suivants doivent également servir

awk '{$1=$1;print}' file.txt
1
iruvar

Cela pourrait fonctionner pour vous (GNU sed):

sed -ri  '/\s+$/s///' file

Ceci recherche les espaces à la fin de la ligne et les supprime si présent.

0
potong