Problème avec sed sous unix (solaris10)

Résolu/Fermé
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023 - Modifié par GHISLINO le 30/04/2012 à 18:25
dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 - 1 mai 2012 à 16:41
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

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
30 avril 2012 à 18:44
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
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
30 avril 2012 à 18:57
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
Modifié par zipe31 le 30/04/2012 à 19:03
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
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
30 avril 2012 à 19:13
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
30 avril 2012 à 19:20
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
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
30 avril 2012 à 19:44
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
30 avril 2012 à 19:54
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

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

Posez votre question
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
30 avril 2012 à 20:06
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
30 avril 2012 à 20:56
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
dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
1 mai 2012 à 08:10
hello
utiliser tr
$ tr '\t' ';' < fichier  | tr -d '\r'
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
1 mai 2012 à 10:06
Salut,

Bien vu ;-))
0
dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
1 mai 2012 à 10:16
merci, ou utiliser nawk (et pas awk sur Solaris)
$ nawk '{gsub("\t", ";");sub("\r", "") ; print}'  fichier
0
GHISLINO Messages postés 214 Date d'inscription lundi 25 juillet 2011 Statut Membre Dernière intervention 8 décembre 2023
1 mai 2012 à 16:26
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
dubcek Messages postés 18719 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 mai 2024 5 615
1 mai 2012 à 16:41
les bouquins que je recommanderais (et un peu les seuls que je connaisse !!) sont chez O'reilly
http://search.oreilly.com/?q=unix&x=0&y=0
0