Supprimer les espaces blanc

b.hamichi -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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
Configuration: Linux Suse
Firefox 3.0

5 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -i.bak 's/\s\+/ /g' fichier.txt
    0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. b.hamichi
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      On attends quand même une solution sed ;-))
      Ben nous on attend que tu te réveilles ;-))
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ;-))
        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
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Sed c'est pas pour les fainéants ;-DD
        0
      3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Trop des caractères à taper pour un paresseux comme moi ;-)
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. b.hamichi
     
    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