, , , , ,

Suppression d'espaces consécutifs

On cherche ici a remplacer plusieurs espaces consécutifs par un seul caractère d'espacement. Ce cas peut se présenter lorsqu'on souhaite traiter la sortie mise en forme d'une commande lambda.

La commande tr permet de supprimer les espaces consécutifs dans une chaîne de caractères lue en entrée. C'est particulièrement intéressant afin de pouvoir correctement traiter par la suite ce flux via la commande cut.

cat mon-fichier.txt | tr -s '\t' ' '

Ici pour chaque ligne du fichier les caractères de tabulation ou les multiples espaces seront remplacés par un seul caractère espace. ce seul caractère d'espacement pourra ensuite servir de séparateur de champ pour cut.

On peut également utiliser sed pour supprimer les espaces en début ou en fin de chaîne:

# utilise une regex pour supprimer le ou les espace en début de chaîne
cat file1.txt | sed -r 's/^( )+//'
 
# utilise une regex pour supprimer le ou les caractères espace en fin de chaîne:
cat file1.txt | sed -r 's/$( )+//'

Références