Conversion de fichier en shell
Fermé
Sentenza
-
21 juil. 2006 à 18:14
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 22 juil. 2006 à 14:55
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 22 juil. 2006 à 14:55
A voir également:
- Conversion de fichier en shell
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Ouvrir fichier .bin - Guide
10 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 896
21 juil. 2006 à 20:18
21 juil. 2006 à 20:18
Salut,
Y'a surement plus simple (en PERL notamment, si lami20j passe par là ...), mais voilà avec un peu de "awk", ce que ça donne :
Y'a surement plus simple (en PERL notamment, si lami20j passe par là ...), mais voilà avec un peu de "awk", ce que ça donne :
[jp@MDK shm]$ cat fich.txt 0;Y;N;; 0;N;N;10; 0;N;N;11; 1;Y;N;; [jp@MDK shm]$ cat script.sh #!/bin/bash for i in $(cat fich.txt) do echo "$i" |\ awk -F";" '{ printf \ "%s\042%s\042\ %s\042%s\042\ %s\042%s\042\ %s\042%s\042%s\n",\ "(Colonne1:",$1,\ "Colonne2:",$2,\ "Colonne3:",$3,\ "Colonne4:",$4,")" }' done [jp@MDK shm]$ sh script.sh (Colonne1:"0" Colonne2:"Y" Colonne3:"N" Colonne4:"") (Colonne1:"0" Colonne2:"N" Colonne3:"N" Colonne4:"10") (Colonne1:"0" Colonne2:"N" Colonne3:"N" Colonne4:"11") (Colonne1:"1" Colonne2:"Y" Colonne3:"N" Colonne4:"") [jp@MDK shm]$;-))
mamiemando
Messages postés
33426
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 décembre 2024
7 809
21 juil. 2006 à 20:39
21 juil. 2006 à 20:39
#!/bin/bash file_in=$1 for line in $(cat $file_in); do i=1 val=`echo $line | cut -d ";" -f$i` echo -ne "(" while test "$val" != "" do echo -n "Colonne$i:\"$val\" " val=`echo $line | cut -d ";" -f$i` let i=i+1 done echo ")" done
On change les droits
(mando@aldur) (~) $ chmod +x plop.sh
Ensuite je mets un fichier d'exemple dans le fichier "plop"
(mando@aldur) (~) $ cat plop plop;plop1;plop2 plap;plap1;plap2 plip;plip1;plip2
Enfin je lance le script :
(mando@aldur) (~) $ ./plop.sh plop (Colonne1:"plop" Colonne2:"plop" Colonne3:"plop1" Colonne4:"plop2" ) (Colonne1:"plap" Colonne2:"plap" Colonne3:"plap1" Colonne4:"plap2" ) (Colonne1:"plip" Colonne2:"plip" Colonne3:"plip1" Colonne4:"plip2" )
Bonne chance
mamiemando
Messages postés
33426
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 décembre 2024
7 809
21 juil. 2006 à 20:40
21 juil. 2006 à 20:40
Ah ben voilà jicipy a repondu en parallèle... Bon ben ça te fait deux méthodes, sauf que la miène marche pour tout nombre de colonne ;) Soit dit en passant il faut aussi que tu traites les lignes commençant par un #... Mais bon ça on va te laisser faire :p
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 569
21 juil. 2006 à 23:54
21 juil. 2006 à 23:54
Bonsoir Miss, Jipicy et Sentenza,
si lami20j passe par là ... Oui, je passe de temps en temps. Je ne peut pas oublier mes /amie?s/
Bon ben ça te fait deux méthodes
Plus bas la 3ème.
sauf que la miène marche pour tout nombre de colonne ;)
La mienne aussi( j'ai pensé de début que ça sera mieux de faire pour un nombre quelconque des colonnes ;) - j'ai vu le message de jipicy avant ton post - et j'étais content de voir qu'on est sur la même longueur d'onde ;)
Soit dit en passant il faut aussi que tu traites les lignes commençant par un #... Mais bon ça on va te laisser faire :p
J'ai l'avantage que je suis en dernier. Je vais traiter moi les lignes avec #.
Avec l'espoir de ne pas vous decevoir, et si jamais killian fera un tour par ici - encore un peu de kanji :D
Le script
P.S. Y'a surement plus simple
Avec la fatigue et les problèmes que j'ai je n'ai pas pu faire mieux.
Je verai un autre jour. Merci
si lami20j passe par là ... Oui, je passe de temps en temps. Je ne peut pas oublier mes /amie?s/
Bon ben ça te fait deux méthodes
Plus bas la 3ème.
sauf que la miène marche pour tout nombre de colonne ;)
La mienne aussi( j'ai pensé de début que ça sera mieux de faire pour un nombre quelconque des colonnes ;) - j'ai vu le message de jipicy avant ton post - et j'étais content de voir qu'on est sur la même longueur d'onde ;)
Soit dit en passant il faut aussi que tu traites les lignes commençant par un #... Mais bon ça on va te laisser faire :p
J'ai l'avantage que je suis en dernier. Je vais traiter moi les lignes avec #.
Avec l'espoir de ne pas vous decevoir, et si jamais killian fera un tour par ici - encore un peu de kanji :D
Le script
#!/usr/bin/perl # use warnings;use strict; open F_LIRE,"fic.txt" or die "E/S : $!\n"; my (@v,%h,@t); while(<F_LIRE>){ next if /^\#/; push @v,[split /;/,$_]; } for (@v){ grep {s/(.*)/"$1"/} @$_; @h{grep {s/(.*)/Colonne$1:/} 1..@$_-1} = @$_; for(sort keys %h){push @t,$_,$h{$_}," "} pop @t and print "(",@t,")\n" and @t=(); }Le résultat
lami20j@debian:~/trash$ cat fic.txt #Colonne1;Colonne2;Colonne3;Colonne4;Colonne5; 0;Y;N;;Miss; 0;N;N;10;Jipicy; 0;N;N;11;Sentenza; 1;Y;N;;lami20j; lami20j@debian:~/trash$ perl point_virgule.pl (Colonne1:"0" Colonne2:"Y" Colonne3:"N" Colonne4:"" Colonne5:"Miss") (Colonne1:"0" Colonne2:"N" Colonne3:"N" Colonne4:"10" Colonne5:"Jipicy") (Colonne1:"0" Colonne2:"N" Colonne3:"N" Colonne4:"11" Colonne5:"Sentenza") (Colonne1:"1" Colonne2:"Y" Colonne3:"N" Colonne4:"" Colonne5:"lami20j") lami20j@debian:~/trash$lami20j
P.S. Y'a surement plus simple
Avec la fatigue et les problèmes que j'ai je n'ai pas pu faire mieux.
Je verai un autre jour. Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 569
22 juil. 2006 à 00:15
22 juil. 2006 à 00:15
Re,
une variante plus directe sans utiliser le tableau pour stockage de fichier (en revanche je ne traite pas les lignes avec #)
P.S. Et pour que ça soit vraiment du kanji voilà le code sur une seule ligne.
=))
une variante plus directe sans utiliser le tableau pour stockage de fichier (en revanche je ne traite pas les lignes avec #)
#!/usr/bin/perl # use warnings;use strict; for (map {[split /;/,$_]} `cat fic.txt`){ my (%h,@t); grep {s/(.*)/"$1"/} @$_; @h{grep {s/(.*)/Colonne$1:/} 1..@$_-1} = @$_; for(sort keys %h){push @t,$_,$h{$_}," "} pop @t and print "(",@t,")\n" and @t=(); }lami20j
P.S. Et pour que ça soit vraiment du kanji voilà le code sur une seule ligne.
=))
#!/usr/bin/perl # use warnings;use strict; for (map {[split /;/,$_]} `cat fic.txt`){my (%h,@t);grep {s/(.*)/"$1"/} @$_;@h{grep {s/(.*)/Colonne$1:/} 1..@$_-1} = @$_;for(sort keys %h){push @t,$_,$h{$_}," "}pop @t and print "(",@t,")\n" and @t=();}
mamiemando
Messages postés
33426
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 décembre 2024
7 809
22 juil. 2006 à 00:46
22 juil. 2006 à 00:46
Cher lami20j, Sentenza a demandé le script en shell ^^ C'est clair que python ou perl sont plus adaptés mais bon ;)
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 569
22 juil. 2006 à 00:42
22 juil. 2006 à 00:42
C'est jipicy qui m'a provoqué. Et je suis d'accord avec toi. Mea culpa.
lami20j
lami20j
mamiemando
Messages postés
33426
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 décembre 2024
7 809
22 juil. 2006 à 01:32
22 juil. 2006 à 01:32
Tu crois que si je lance une provoc à sebsauvage pour la version python ça marcherait aussi ? ^^
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
22 juil. 2006 à 08:11
22 juil. 2006 à 08:11
Il est en vacances en ce moment et sans connection au Net (enfin si, mais en RTC)...
Donc faudra remonter le topic en temps voulu(s).
;-))
PS. Merci l'ami vingt J
Donc faudra remonter le topic en temps voulu(s).
;-))
PS. Merci l'ami vingt J
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 569
22 juil. 2006 à 10:05
22 juil. 2006 à 10:05
Salut,
Ben, je vois que j'ai fâché le monde. Je ferai plus d'attention la prochaine fois.
Bon Week-end à tous
A+
lami20j
Ben, je vois que j'ai fâché le monde. Je ferai plus d'attention la prochaine fois.
Bon Week-end à tous
A+
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
22 juil. 2006 à 10:13
22 juil. 2006 à 10:13
je vois que j'ai fâché le monde
OuKSa ??? :-\
OuKSa ??? :-\
mamiemando
Messages postés
33426
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 décembre 2024
7 809
22 juil. 2006 à 13:40
22 juil. 2006 à 13:40
Moi j'ai pas trouvé que quelqu'un était fâché. En tout cas ça m'a bien fait rire de voir comment on s'est enflammés pour pondre trois programmes pour un truc tout simple ^^
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
22 juil. 2006 à 13:46
22 juil. 2006 à 13:46
comment on s'est enflammés
Avec les températures actuelles, c'était la moindre des choses :-DDD
Avec les températures actuelles, c'était la moindre des choses :-DDD
mamiemando
Messages postés
33426
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
13 décembre 2024
7 809
22 juil. 2006 à 13:55
22 juil. 2006 à 13:55
:-)
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 569
22 juil. 2006 à 14:39
22 juil. 2006 à 14:39
Salut,
OuKSa ??? :-\
Moi j'ai pas trouvé que quelqu'un était fâché.
Tant mieux alors :D
mauvaise interpretation, je devrait utiliser #!/bin/sh ;)
En tout cas ça m'a bien fait rire de voir comment on s'est enflammés pour pondre trois programmes pour un truc tout simple ^^
Peut être pour nous, mais pas pour Sentenza, mais c'est pareil je n'ai pas pris au sérieux.
D'ailleurs la vraie solution shell c'est la tienne, rien à dire, chapeau.
J'ai pris peut être une mauvaise habitude de m'amuser dans les posts qui demandent des solutions en shell.
Comme ça je me garde en forme. Je préfère ça que de resoudre des sudoku.
Parmi les petites choses que je connais (et ce n'est pas grand chose), malheureusement shell ne se trouve pas.
Bonne journée à vous.
lami20
OuKSa ??? :-\
Moi j'ai pas trouvé que quelqu'un était fâché.
Tant mieux alors :D
mauvaise interpretation, je devrait utiliser #!/bin/sh ;)
En tout cas ça m'a bien fait rire de voir comment on s'est enflammés pour pondre trois programmes pour un truc tout simple ^^
Peut être pour nous, mais pas pour Sentenza, mais c'est pareil je n'ai pas pris au sérieux.
D'ailleurs la vraie solution shell c'est la tienne, rien à dire, chapeau.
J'ai pris peut être une mauvaise habitude de m'amuser dans les posts qui demandent des solutions en shell.
Comme ça je me garde en forme. Je préfère ça que de resoudre des sudoku.
Parmi les petites choses que je connais (et ce n'est pas grand chose), malheureusement shell ne se trouve pas.
Bonne journée à vous.
lami20
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
22 juil. 2006 à 14:55
22 juil. 2006 à 14:55
T'as qu'à sortir de ta coquille un peu ;-DDDDD