IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Dupliquer un fichier à partir d'une liste de noms dans un fichier txt


Sujet :

Shell et commandes GNU

  1. #21
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    c'est la même chose, de quelle adaptation parles-tu ?

    si tu as des résultats différents entre les deux formes (multi vs. uni ligne), c'est que ton script est encore au format DOS, et non au format UNIX !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    je ne comprends pas pourquoi vous dites que mon script est en format DOS

  3. #23
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    parce qu'il n'y a pas de raison que ça fonctionne quand la commande est sur une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while read -r line;do echo "$line";done < <(tr -d '\r' <1.txt)
    plutôt que sur plusieurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read -r line
    do
       echo "$line"
    done < <(tr -d '\r' <./fichier)
    à moins que l'adaptation consiste à indiquer le nom correct du fichier.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    justement je ne comprends pas pourquoi .je cherche mais ne trouve pas .ceci dit grace à vous j'ai plusieurs méthodes pour faire ce que j'ai besoin mais pour le bug des multi lignes c'est débile mais je n'arrive pas à comprendre

  5. #25
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    pour le bug des multi lignes c'est débile mais je n'arrive pas à comprendre
    Pourrais-tu nous donner le contenu précis de ton script?
    Par exemple, si ton script s'appelle "test.sh", quel est le résultat de od -c test.sh ? (dans la version multi-ligne, évidemment)

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    merci jack-it de s'occuper de mon petit probleme
    je donne mon code multi ligne du fichier p_dupli_img.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/bash
    while read -r line
    do
       echo "$line"
    done < <(tr -d '\r' <1.txt)
    je lance ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    od -c /cygdrive/c/cygwin64/bin/p_dupli_img.sh
    et j'ai ce resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    0000000   #   !   /   b   i   n   /   b   a   s   h  \r  \n   #       f
    0000020   o   r       l   i   n   e       i   n       $   (   c   a   t
    0000040       1   .   t   x   t       |       t   r       -   d       '
    0000060   \   r   '   )  \r  \n   #       d   o       c   p       "   x
    0000100   x   .   j   p   g   "       r   e   p   _   d   e   s   t   /
    0000120   "   $   l   i   n   e   "  \r  \n   #       d   o   n   e  \r
    0000140  \n   #       w   h   i   l   e       r   e   a   d       -   r
    0000160       l   i   n   e   ;   d   o   ;   e   c   h   o       "   $
    0000200   l   i   n   e   "   ;   d   o   n   e       <   <   (   t   r
    0000220       -   d       '   \   r   '       <   1   .   t   x   t   )
    0000240  \r  \n   #       w   h   i   l   e       r   e   a   d       -
    0000260   d       $   '   \   r   '       v   a   r       ;   d   o
    0000300   c   p       "   x   x   .   j   p   g   "       "   r   e   p
    0000320   _   d   e   s   t   /   $   v   a   r   "   ;   d   o   n   e
    0000340       <       1   .   t   x   t  \r  \n   #       w   h   i   l
    0000360   e       r   e   a   d       -   r       l   i   n   e   ;   d
    0000400   o       e   c   h   o       "   $   l   i   n   e   "   ;   d
    0000420   o   n   e       <       <   (   t   r       -   d       '   \
    0000440   r   '       <   1   .   t   x   t   )              \r  \n   w
    0000460   h   i   l   e       r   e   a   d       -   r       l   i   n
    0000500   e  \r  \n   d   o  \r  \n               e   c   h   o       "
    0000520   $   l   i   n   e   "  \r  \n   d   o   n   e       <       <
    0000540   (   t   r       -   d       '   \   r   '       <   1   .   t
    0000560   x   t   )  \r  \n
    0000565

  7. #27
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #   !   /   b   i   n   /   b   a   s   h  \r  \n
    voilà. \r\n : fins de lignes W$ !
    ton script n'est pas au format UNIX, il est au format DOS.

    et bigs3232, toujours pile-poil à côté de la plaque : le résultat d'od -c montre f o r l i n e i n $ ( c a t, ce qui ne correspond pas au script montré au début du message :while read...

    donc, on ne sait toujours pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    oui n_bah .merci pour ton aide voilà le resultat avec la boucle while
    0000000 # ! / b i n / b a s h \r \n w h i
    0000020 l e r e a d - r l i n e \r
    0000040 \n d o \r \n e c h o " $ l
    0000060 i n e " \r \n d o n e < < ( t
    0000100 r - d ' \ r ' < 1 . t x t
    0000120 ) \r \n
    0000123
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/bin/bash
    while read -r line
    do
       echo "$line"
    done < <(tr -d '\r' <1.txt)

  9. #29
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Ton script n'est toujours pas au format Unix.
    Quel éditeur utilises-tu pour le modifier ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Ton script n'est toujours pas au format Unix.
    Quel éditeur utilises-tu pour le modifier ?
    j'utilise notepad++v6.9.2 sous windows

  11. #31
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Dans la barre d'état, double clic sur Windows (CR LF) et choisir Convertir en Format Unix (LF).
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  12. #32
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    eureka .grand merci à al1_24 et bien sur aux autres personnes .c'est plutot edition/convertir les sauts lignes

  13. #33
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    mon fichier txt avec separateur ; possède plus de 10 colonnes ou champs
    j'arrive à recuperer les colonnes jusqu'à 9 mais a partir de 10 11 ect..le code ne marche plus
    je pense que cette variable $11; n'est pas lu correctement mais je ne sais pas comment écrire autrement
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    IFS=';';
    while read line; do
        set -- $line; 
        var1=$1;
        var2=$11;
      echo $var2;
    done < <(tr -d '\r' <ned_ajout.csv)

  14. #34
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    comme la colorisation du site le montre, le shell interprète $11 comme le contenu de la variable $1 auquel est ajouté le nombre 1.

    il faut ajouter des accolades au-delà de 9 : "${10}".

    mais pourquoi ne pas utiliser un tableau ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while IFS=';' read -a ar; do echo "${ar[0]} - ${ar[1]}"; done < fichier
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    super ca marche avec "${10}"
    pourquoi utiliser tableau?
    et je ne comprends pas trop cette syntaxe
    "${ar[0]} - ${ar[1]}"

  16. #36
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    pourquoi utiliser tableau?
    c'est plus propre. ça évite de modifier l'IFS pour l'ensemble du script.
    et je ne comprends pas trop cette syntaxe
    c'est comme ça que sont développés les éléments d'un tableau. Ici, les deux premiers éléments, séparés par -.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  17. #37
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Points : 118
    Points
    118
    Par défaut
    merci n_bah .ca marche parfaitement le array

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/03/2017, 14h06
  2. [XL-2010] Macro pour renommer des fichiers à partir d'une liste de nom de fichiers
    Par thomahh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/01/2013, 17h03
  3. Copie de fichier à partir d'une liste
    Par curt dans le forum VBA Access
    Réponses: 14
    Dernier message: 09/07/2008, 14h00
  4. [Conception] Téléchargement de fichier à partir d'une liste selectionnée
    Par charafax dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2007, 13h53
  5. Sélectionner un fichier à partir d'une liste filtrée
    Par Lenaick dans le forum C++Builder
    Réponses: 7
    Dernier message: 14/03/2006, 11h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo