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 :

Extraire une partie d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut Extraire une partie d'un fichier
    Bonjour

    j'ai un fichier texte du type "tab delimited" (i.e. le delimiteur est donc une tabulation)

    toto.txt
    string1 blablabla
    string2 blobloblo

    j'ai besoin de stocker string1 et string dans des variables pour pouvoir les reutiliser apres. String1 et string2 n'ont pas la meme taille et blabla et bloblo n'ont jamais d'espace.

    j'ai vainement cherché une solution avec cut ou grep mais je n'y suis pas arrivé (je connais bien php mais pas trop les commandes shell).

    un coup de main serait sympa

    F

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    awk est fait pour ca. Tu pourras acceder a tes contenus avec $1 et $2.

    Donne un exemple de ce que tu veux faire si tu veux un exemple awk
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    hum, merci, je vais regarder ce que c ce awk.

    ce que je veux faire c'est strocker dans une variable string1 et string2 (qui seront différent a chaque fois évidemment). C'est pour faire marcher un pipeline de traitement de sequences d'ADN.

    avec cut j'arrive bien a extraire string1 et string2 mais il me les met "emsemble" :
    Y=`cut toto.txt -f1`
    echo $Y

    ----> ca donne string1 string2

    et je souhaiterai avoir :
    X = string1
    Y = string2

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    La methode lente et crade :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Y=$(awk '{ print $1 }' )
    Z=$(awk '{ print $2 }' )
    La methode "propre" est de passer les variables de ton script a awk, ce qui te permettra de tout faire en seul appel a awk. Mais je ne me souviens plus comment on passe des variables a awk la tout de suite, donc il faut chercher ca.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    raaa, mache pas, pas de awk installé.
    Ah ca m'enerve, ca doit opas etre si dur que ca a faire.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    awk pas installé ? sur linux ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Po '[^\t]*\t' fichier
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Citation Envoyé par arginine Voir le message
    hum, merci, je vais regarder ce que c ce awk.

    ce que je veux faire c'est strocker dans une variable string1 et string2 (qui seront différent a chaque fois évidemment). C'est pour faire marcher un pipeline de traitement de sequences d'ADN.

    avec cut j'arrive bien a extraire string1 et string2 mais il me les met "emsemble" :
    Y=`cut toto.txt -f1`
    echo $Y

    ----> ca donne string1 string2

    et je souhaiterai avoir :
    X = string1
    Y = string2
    Bonjour,
    Pas loin de la solution, mais à ce que je comprend, ton fichier possède plus que 2 lignes et tu veux lire 2 ligne à la fois à chaque itération, voici donc un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat tab_de1.txt
    string1 blablabla
    string2 blobloblo
    string3 blablabla
    string4 blobloblo
    string5 blablabla
    string6 blobloblo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ cat tab_de.bash
    #!/bin/bash
    while read X
    do 
      read Y
      echo "X=$X"
      echo "Y=$Y"
    done < <(cut -f1 tab_de1.txt )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ ./tab_de.bash
    X=string1
    Y=string2
    X=string3
    Y=string4
    X=string5
    Y=string6

Discussions similaires

  1. Extraire une partie d'un fichier bin
    Par simon1 dans le forum Langage
    Réponses: 3
    Dernier message: 29/08/2009, 15h29
  2. Extraire une partie d'un fichier
    Par Smith_4400 dans le forum Langage
    Réponses: 12
    Dernier message: 03/08/2009, 16h07
  3. Extraire une partie d'un fichier de bytes
    Par Cedwik dans le forum Flex
    Réponses: 1
    Dernier message: 14/04/2008, 11h27
  4. extraire une partie d'un fichier texte
    Par Mydriaze dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2007, 12h46
  5. Awk extraire une partie d'un fichier
    Par titexe dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2006, 11h54

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