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 :

Comparaison nom de fichier


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 48
    Points : 34
    Points
    34
    Par défaut Comparaison nom de fichier
    Bonjour,

    voila mon problème je souhaiterais récupérer dans une liste (fichier au format txt) le nom d'un fichier et le comparer de façon à récupérer le nom du 2ème fichier (les fichiers vont par pair).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mon fichier au format txt
     
    ADN_S1_R1
    ADN_S1_R2
    ADN_S2_R1
    ADN_S2_R2
    ADN_S3_R1
    ADN_S3_R2
    et mon code ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
     
    while read ligne
     
    do
     
    	echo `expr substr "$ligne" 6 1`
    	if `expr substr "$ligne" 6 1` = ???
     
    done < /home/usr/maliste
    je veux lire le fichier ligne par ligne et qu'il me trouve le nom du 2ème fichier qui va de pair avec le 1er, le problème est que la variable $ligne ne prend qu'une seule valeur... donc comment faire pour comparer ma variable $ligne à une 2ème variable ?
    J'ai aussi pensé à utiliser un grep mais je ne vois pas non plus comment résoudre mon problème...

    J'espère avoir été assez clair...

    Merci à vous et bonne journée !

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Le nom du 2nd fichier on le sort d'où ? D'un chapeau ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    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 386
    Points
    19 386
    Par défaut
    Bonjour,
    Citation Envoyé par TrafalgarD
    J'espère avoir été assez clair...


    expr est un programme externe inutile en bash :
    dans echo `cmd`, le echo est inutile.

    pour ton problème de lecture, ajoute un read dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ cat ~/lorem\ ipsum
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    Vivamus sagittis diam vitae nisi viverra, eu ornare lectus cursus.
    Maecenas blandit, arcu sit amet condimentum accumsan, enim metus semper turpis, a laoreet massa lacus accumsan tortor.
    Mauris eu eleifend lacus, eget vulputate augue.
    Nam eu posuere metus, non tincidunt mi.
    Donec mi orci, tristique eu turpis pharetra, malesuada auctor sem.
    Maecenas placerat turpis at ligula tempus venenatis.
    Proin velit nibh, molestie at tincidunt quis, bibendum vitae dui.
    Ut malesuada nunc ut metus hendrerit commodo.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while read line; do read line2; echo "$line => $line2"; done < <(head ~/lorem\ ipsum )
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. => Vivamus sagittis diam vitae nisi viverra, eu ornare lectus cursus.
    Maecenas blandit, arcu sit amet condimentum accumsan, enim metus semper turpis, a laoreet massa lacus accumsan tortor. => Mauris eu eleifend lacus, eget vulputate augue.
    Nam eu posuere metus, non tincidunt mi. => Donec mi orci, tristique eu turpis pharetra, malesuada auctor sem.
    Maecenas placerat turpis at ligula tempus venenatis. => Proin velit nibh, molestie at tincidunt quis, bibendum vitae dui.
    Ut malesuada nunc ut metus hendrerit commodo. => Nunc egestas eleifend turpis vel sollicitudin.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Le nom du 2nd fichier on le sort d'où ? D'un chapeau ?
    Non les noms de mes fichiers sont tous dans le fichier texte,
    par exemple le 1er fichier est "ADN_S1_R1" donc je veux obtenir le fichier qui va avec celui ci à savoir "ADN_S1_R2"
    L'élément commun à ces 2 fichiers étant le "S1"

    ducoup j'ai essayé ainsi

    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
    #!/bin/bash
     
    while read ligne
     
    do
    	read ligne2 
     
    	if lettre=${ligne:6:1} == lettre=${ligne2:6:1}
     
    		if lettre=${ligne:9:1} =! lettre=${ligne2:9:1}
    		echo "$ligne1"
    		echo "$ligne2" 
    		fi
    	fi
     
    done < /home/usr/liste_essai
    mais la console me renvoie une erreur près du symbole fi...

  5. #5
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat plop 
    ADN_S1_R1
    ADN_S1_R2
    ADN_S2_R1
    ADN_S4_R2
    ADN_S3_R1
    ADN_S3_R2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ sed 'N;/[^_]*_.\([^_]*\)_.*\n[^_]*_.\1/{s/\n/ = /};s/\n/ != /' plop 
    ADN_S1_R1 = ADN_S1_R2
    ADN_S2_R1 != ADN_S4_R2
    ADN_S3_R1 = ADN_S3_R2
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  6. #6
    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 386
    Points
    19 386
    Par défaut
    mais ne mets pas l'affectation dans le test !
    et ne donne pas le même nom à des variables différentes.

    t'as lu un tuto ?
    il y en a des bons dans ma signature.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Comparaison et tri en fonction du nom du fichier
    Par halloumiali dans le forum C
    Réponses: 9
    Dernier message: 20/03/2012, 18h16
  2. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  3. Problème de comparaison de noms de fichiers
    Par ProviewJava1 dans le forum C
    Réponses: 4
    Dernier message: 19/01/2007, 14h31
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21

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