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.
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!
Essaye ça:
sed -i 's/\s*$//' youfile.txt
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)
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
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.