49 votes

Sed pour supprimer les espaces vides

Quelqu'un sait-il comment utiliser Sed pour supprimer tous les espaces vides dans un fichier texte ? J'ai essayé d'utiliser la commande de suppression "d" pour le faire, mais je n'arrive pas à comprendre.

57voto

Volker Siegel Points 12033

Quel type d'espace ?

L'expression "supprimer tous les espaces vides" peut avoir plusieurs significations :

  1. supprimer toutes les occurrences du caractère espace, code 0x20 .
  2. supprimer tous les espaces horizontaux, y compris le caractère de tabulation horizontale, " \t "
  3. supprimer tous les espaces blancs, y compris les nouvelles lignes, " \n "et autres

Le bon outil pour le travail

Si sed s'il ne s'agit pas d'une exigence pour une raison cachée, mieux vaut utiliser le bon outil pour le travail.

La commande tr sert principalement à traduire (d'où le nom "tr") une liste de caractères en une liste d'autres caractères. Dans un cas particulier, il peut traduire une liste de caractères vide ; L'option -d ( --delete ) supprime les caractères qui apparaissent dans la liste.

La liste des caractères peut utiliser les classes de caractères de la base de données [:...:] syntaxe.

  1. tr -d ' ' < input.txt > no-spaces.txt
  2. tr -d '[:blank:]' < input.txt > no-spaces.txt
  3. tr -d '[:space:]' < input.txt > no-spaces.txt

En insistant sur sed

Avec sed, le [:...:] pour les classes de caractères doit être combinée avec la syntaxe des jeux de caractères dans les expressions rationnelles, [...] , ce qui donne l'image quelque peu déroutante de [[:...:]] :

  1. sed 's/ //g' input.txt > no-spaces.txt
  2. sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
  3. sed 's/[[:space:]]//g' input.txt > no-spaces.txt

9voto

Cyrus Points 4962

Vous pouvez l'utiliser pour supprimer tous les espaces blancs dans file :

 sed -i "s/ //g" file

3voto

aluk.e Points 31

Peut-être est-ce trop tard, mais sed prend les expressions régulières en entrée. ' \s ' est l'expression de tous les espaces blancs. En d'autres termes, l'expression ' est l'expression de tous les espaces blancs. sed s/'\s'//g devrait faire l'affaire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X