Problème avec sed sous unix (solaris10)

Résolu
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j 'ai un soucis avec sed sous UNIX (solaris 10) mais sous linux ça marche bien

j ai le fichier suivant:

20;7 1 DIOCESE-1 9181 401 612 F03 1 0 0 0 0 0 0 0 0 0 54 255 0 0 0 0 0 0 0 0 0 0 0 0 0
20;7 1 DIOCESE-1 9181 401 612 F03 2 0 0 0 0 0 0 0 0 0 222 1631 0 0 0 0 0 0 0 0 0 0 0 0 0
20;7 1 DIOCESE-1 9181 401 612 F03 3 0 0 0 0 0 0 0 0 0 124 849 0 0 0 0 0 0 0 0 0 0 0 0 0
20;7 1 DIOCESE-1 9181 401 612 F03 4 17 0 584 0 584 0 0 0 584 0 0 0 14 4 0 4 0 0 0 3 14 0 0 0
20;7 2 DIOCESE-2 9182 401 612 F03 1 0 0 0 0 0 0 0 0 0 192 680 0 0 0 0 0 0 0 0 0 0 0 0 0

et je souhaite supprimer les tabulations

mais sous linux la commande marche bien

cat fichier.txt | sed s/'\t'/';'/g

20;7;1;DIOCESE-1;9181;401;612;F03;1;0;0;0;0;0;0;0;0;0;54;255;0;0;0;0;0;0;0;0;0;0;0;0;0
20;7;1;DIOCESE-1;9181;401;612;F03;2;0;0;0;0;0;0;0;0;0;222;1631;0;0;0;0;0;0;0;0;0;0;0;0;0
20;7;1;DIOCESE-1;9181;401;612;F03;3;0;0;0;0;0;0;0;0;0;124;849;0;0;0;0;0;0;0;0;0;0;0;0;0
20;7;1;DIOCESE-1;9181;401;612;F03;4;17;0;584;0;584;0;0;0;584;0;0;0;14;4;0;4;0;0;0;3;14;0;0;0
20;7;2;DIOCESE-2;9182;401;612;F03;1;0;0;0;0;0;0;0;0;0;192;680;0;0;0;0;0;0;0;0;0;0;0;0;0
20;7;2;DIOCESE-2;9182;401;612;F03;2;0;0;0;0;0;0;0;0;0;405;1385;0;0;0;0;0;0;0;0;0;0;0;0;0
20;7;2;DIOCESE-2;9182;401;612;F03;3;66;2;1011;8;1011;8;0;0;1019;0;0;0;48;23;0;23;0;0;0;20;48;1;0;0

Par contre sous linux la commande ne modifie pas le fichier

merci pour votre aide

8 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Es-tu sûr que ce sont bien des tabulations ?
    Affiche le résultat de la commande :
    cat -A ton_fichier

    N'oublie pas d'encadrer ta commande avec les balises <code></code> (le pictogramme "<>" dans l'éditeur de texte de CCM, afin qu'on voit bien le formatage de ton fichier.
    0
  2. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    salut

    sous UNIX la commande n 'est pas reconnu

    cat -A fichier.txt
    
    cat: illegal option -- A
    usage: cat [ -usvtebn ] [-|file] ...


    par contre sous Linux

    cat -A fichier.txt
    
    20;7^I1^IDIOCESE-1^I9181^I401^I612^IF03^I1^I0^I0^I0^I0^I0^I0^I0^I0^I0^I54^I255^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0$
    20;7^I1^IDIOCESE-1^I9181^I401^I612^IF03^I2^I0^I0^I0^I0^I0^I0^I0^I0^I0^I222^I1631^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0$
    20;7^I1^IDIOCESE-1^I9181^I401^I612^IF03^I3^I0^I0^I0^I0^I0^I0^I0^I0^I0^I124^I849^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0$
    20;7^I1^IDIOCESE-1^I9181^I401^I612^IF03^I4^I17^I0^I584^I0^I584^I0^I0^I0^I584^I0^I0^I0^I14^I4^I0^I4^I0^I0^I0^I3^I14^I0^I0^I0$
    20;7^I2^IDIOCESE-2^I9182^I401^I612^IF03^I1^I0^I0^I0^I0^I0^I0^I0^I0^I0^I192^I680^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0$
    20;7^I2^IDIOCESE-2^I9182^I401^I612^IF03^I2^I0^I0^I0^I0^I0^I0^I0^I0^I0^I405^I1385^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0^I0$
    
    
    
    
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Sous GNU/Linux c'est bien des tabulations.

      Par contre c'est sous Solaris qu'il faudrait être sûr ;-\
      Essaye avec :
      sed -n l fichier.txt
      C'est un ELLE minuscule et non pas un UN ou un i majuscule.

      Sinon pour supprimer les espaces essayes avec :
      sed 's/  */;/g' fichier.txt
      ou
      sed 's/\s\+/;/g' fichier.txt

      Pour la 1ère expression c'est 2 espaces qu'il y a avant l'astérisque.
      0
  3. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    salut

    merci de trouver ci-dessous les resulats

    pour
    sed -n l fichier.txt  
    
    20;7>1>DIOCESE-1>9181>401>612>F03>1>0>0>0>0>0\
    >0>0>0>0>54>255>0>0>0>0>0>0>0>0>0>0>0\
    >0>0
    20;7>1>DIOCESE-1>9181>401>612>F03>2>0>0>0>0>0\
    >0>0>0>0>222>1631>0>0>0>0>0>0>0>0>0>0>0\
    >0>0
    20;7>1>DIOCESE-1>9181>401>612>F03>3>0>0>0>0>0\
    
    


     sed 's/  */;/g' fichier.txt 
    et
     sed 's/\s\+/;/g' fichier.txt


    pas de changement

    20;7    1       DIOCESE-1       9181    401     612     F03     1       0       0       0       0       0       0       0       0       0       54      255     0       0       0       0       0       0       0       0       0       0       0       0       0
    20;7    1       DIOCESE-1       9181    401     612     F03     2       0       0       0       0       0       0       0       0       0       222     1631    0       0       0       0       0       0       0       0       0       0       0       0       0
    20;7    1       DIOCESE-1       9181    401     612     F03     3       0       0       0       0       0       0       0       0       0       124     849     0       0       0       0       0       0       0       0       0       0       0       0       0
    20;7    1       DIOCESE-1       9181    401     612     F03     4       17      0       584     0       584     0       0       0       584     0       0       0       14   
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Arf ;-(((

      Je ne sais pas à quoi correspond cet affichage 20;7>1>DIOCESE-1, enfin surtout les chevrons ;-((

      Quand tu dis "pas de changement " c'est bien de l'affichage à l'écran dont on parle, pas d'un changement direct dans le fichier lui même hein ?

      En dernier recours, affiche la sortie de :

      od -ax fichier.txt

      Ou bien essaies de mettre un bout de ton fichier sur Cjoint histoire de voir quels sont les caractères qui nous enquiquinent ;-\
      0
  4. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    salut

    la commande
    od -ax
    n'est pas reconnu sous UNIX

    od -ax fichier.txt
    usage: od [-bcCdDfFoOsSvxX] [-] [file] [offset_string]
           od [-bcCdDfFoOsSvxX] [-t type_string]... [-A address_base] [-j skip] [-N count] [-] [file...]
    


    j'ai joint le fichier ci joint le lien

    https://www.cjoint.com/?3DEtOTaX9R5

    merci d'avance
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Ben c'est bien des tabulations que j'ai aussi ;-\

      C'était bien le fichier issue de ton Solaris, pas celui de ta distrib GNU/Linux ?

      Sinon pour "od" essaie avec "od -cx"

      Et en dernier recours, essaies avec le code hexa :
      sed 's/\x09/;/g' fichier
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    salut

    le resultat de
    od -cx fichier.txt


    0000000   2   0   ;   7  \t   1  \t   D   I   O   C   E   S   E   -   1
                3230    3b37    0931    0944    494f    4345    5345    2d31
    0000020  \t   9   1   8   1  \t   4   0   1  \t   6   1   2  \t   F   0
                0939    3138    3109    3430    3109    3631    3209    4630
    0000040   3  \t   1  \t   0  \t   0  \t   0  \t   0  \t   0  \t   0  \t
                3309    3109    3009    3009    3009    3009    3009    3009
    0000060   0  \t   0  \t   0  \t   5   4  \t   2   5   5  \t   0  \t   0
                3009    3009    3009    3534    0932    3535    0930    0930
    0000100  \t   0  \t   0  \t   0  \t   0  \t   0  \t   0  \t   0  \t   0
                0930    0930    0930    0930    0930    0930    0930    0930
    


    par contre la
    sed 's/\x09/;/g' fichier
    ne fonction toujours pas

    20;7    1       DIOCESE-1       9181    401     612     F03     1       0       0       0       0       0       0       0       0       0       54      255     0       0       0       0       0       0       0       0       0       0       0       0       0
    20;7    1       DIOCESE-1       9181    401     612     F03     2       0       0       0       0       0       0       0       0       0       222     1631    0       0       0       0       0       0       0       0       0       0       0       0       0
    20;7    1       DIOCESE-1       9181    401     612     F03     3       0       0       0       0       0       0       0       0       0       124     849     0       0       0       0       0       0       0       0       0       0       0       0       0
    20;7    1       DIOCESE-1       9181    401     612     F03     4       17      0       584     0       584     0       0       0       584     0       0       0       14   


    tu connait l'éditeur awk je pense qu'on peut explorer ce chemin

    merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Oups j'avais raté dans le fichier (cjoint) les fins de lignes à la sauce Micro$oft :-(((

      Il faut convertir ton fichier au format Unix avec dos2unix avant.
      0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    utiliser tr
    $ tr '\t' ';' < fichier  | tr -d '\r'
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Bien vu ;-))
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      merci, ou utiliser nawk (et pas awk sur Solaris)
      $ nawk '{gsub("\t", ";");sub("\r", "") ; print}'  fichier
      0
  8. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    salut dubcek

    les deux codes fonctionnent très bien,

    sincèrement tu es formidable , j'aimerais avoir ton niveau

    merci à toi et si tu as des bouquins à me conseiller ça sera la bienvenue.

    merci à toi aussi zipe31 pour ta disponibilité.

    "je serais le plus heureux de la terre s'il m'arrivait à être l'ami de tout le monde"
    0