Supprimer les espaces blanc

Fermé
b.hamichi - 28 déc. 2008 à 09:33
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 28 déc. 2008 à 11:03
Bonjour,

J'aimerai eliminer des espaces blanc ( _ ) dans un fichier text (file.txt) entre les colonnes
EX:

AAA_____ XXX_ YYY__ ZZZ
BBB_____XXX _YYY__ ZZZ
CCC_____ XXX_ YYY__ ZZZ

Le probleme est le suivant, les blancs entre les colonnes sont pas les meme, on resultat, j'aimerai avoir un seul blanc entre les colonnes oubien tabulation:

AAA_ XXX_ YYY_ ZZZ
BBB_ XXX_ YYY_ ZZZ
CCC_XXX _YYY_ ZZZ

Merci pour votre aide

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
28 déc. 2008 à 09:48
Salut,
sed -i.bak 's/\s\+/ /g' fichier.txt
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
28 déc. 2008 à 09:49
Salut,

lami20j@debian:~/trash$ cat blanc.txt
AAA     BBBB    CCC
AA              BBB     CCC
AAAA      BBBB     CCC
lami20j@debian:~/trash$ perl -ni.orig -e 's/[ \t]+/ /g;print' blanc.txt
lami20j@debian:~/trash$ cat blanc.txt
AAA BBBB CCC
AA BBB CCC
AAAA BBBB CCC
lami20j@debian:~/trash$ cat blanc.txt.orig
AAA     BBBB    CCC
AA              BBB     CCC
AAAA      BBBB     CCC
0
Wowwww c'est cool :))))) Merci infiniment, je me suis tappé la tete pendant une journée
Pourrez vous m'explique la séquence:
\s\+
Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
28 déc. 2008 à 09:57
Extrait de SED - Les expressions régulières :
*
    * Correspond à une séquence de zéro, une ou plusieurs occurrence(s) de l'expression précédente, 
      qui peut être un caractère ordinaire, un caractère spécial protégé par un \, un point (.), un groupe 
      d'expression régulière ou une sous-expression

\+
    * Identique à *, à part qu'il correspond à une ou plusieurs occurence(s) de l'expression précédente

\s
    * n'importe quel caractère d'espacement : espace, tabulation horizontale ou verticale
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
28 déc. 2008 à 10:00
Re,

s/[ \t]+/ /g


s///
C'est l'opérateur substitute
La vraie syntaxe est s/Regex/Remplacement/

[ \t] - c'est une classe de caractères qui permet de reconnaître soit un espace sois une tabulation \t
(Il y a une classe \s qui peut reconnaître soit un espace, soit une tabulation \t, soit un saut de ligne \n
je ne l'ai pas utilisé pour ne pas supprimer le saut de ligne à la fin)
+ c'est un quantificateur qui permettra la reconnaissance de minimum un espace ou tabulation,
/ / - la partie remplacement contient un espace (ce que tu as demandé)
/g - c'est un modificateur de regex (Regular Expression) qui veut dire global, donc le remplacement se fera à chaque fois qu'il trouve au moins un espace ou tabulation

On attends quand même une solution sed ;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
28 déc. 2008 à 10:38
On attends quand même une solution sed ;-))
Ben nous on attend que tu te réveilles ;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
28 déc. 2008 à 10:44
;-))
Je n'ai pas mis un backslash pour le quantificateur.
C'est pour ça que ça ne marchais pas quand j'ai essayé avec sed.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
28 déc. 2008 à 10:48
Sed c'est pas pour les fainéants ;-DD
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
28 déc. 2008 à 11:03
Trop des caractères à taper pour un paresseux comme moi ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour les explications, je crois qu'il faut que je bosse les expressions régulières et leurs utilisation avec SED :)))))
Bonne journée à tous, et merci encore aux gens qui veillent sur le FORUM :)
0