Suppression d'espace en shell bash [Résolu/Fermé]

Signaler
-
 jean -
Bonjour,

j'ai dans un script une variable qui contient une liste de prénoms et de noms.
Mais je n'arrive pas à supprimer les premiers espaces de début de ligne.
Quand je fais sed 's/ //g' je supprime les espaces entre les mots mais pas les 2 espaces du début.
Comment je peux faire ?

avec cat -A j'ai le code "M-BM- M-BM- " qui apparait a l'endroit des espaces génants

En vous remerciant

6 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 837
Salut,

Voir ce post !
je vois bien la similitude du probleme, mais pourriez vous m'expliquer la regexp suivante ( car je suppose que c'est avec ca que je devrais resoudre mon pb ) :

sed '/^\xC2\xA0$/{:z;N; /\n\xC2\xA0$/!b; s/^\xC2\xA0\n\xC2\xA0\n\xC2\xA0\n\xC2\xA0$/#/;T z}'
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 837
S'il n'y a que les 2 espaces en début de ligne à supprimer, la syntaxe suivante devrait suffire :

sed 's/^\xC2\xA0//' fichier
EN effet, avec sed 's/^\xC2\xA0\xC2\xA0//' fichier cela a fonctionné.
A quoi correspond le xC2\xA0 ? comment sait on que c'est ce code ci qui correspond ?

merci en tout cas
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 837
En fait "\xC2\xA0" c'est la notation en hexadécimal du code ASCII (\302\240) correspondant à la séquence de caractère non-imprimable "M-BM- M-BM- ".

Il suffit d'afficher ton fichier avec "cat -A" ou "sed -n l" ou encore avec un éditeur hexadecimal comme "hexedit" ou "od" pour voir ce code. Après il suffit de chercher un tableau sur le net pour la correspondance...
Très bien . Merci pour les informations, je pourrai me débrouiller dorénavant :)