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 :

[Variables] Concaténation commande AWK


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 63
    Points
    63
    Par défaut [Variables] Concaténation commande AWK
    Bonjour,

    Comment garder les variables après une concaténation de AWK dans une boucle ?
    Le 3 premières commandes sont là que pour expliquer le fonctionnement de la dernière commande.
    Exemple

    Fichier d'entrée tmp.lst
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CC	22/04/2015 17:50 	AAA140380170	OK	0	BB_4_1	batch
    CC	22/04/2015 17:50	AAA140380176	OK	0	BB_7_1	batch
    CC	22/04/2015 17:50	AAA140380178	OK	0	BB_4_1	batch
    CC	22/04/2015 17:50	AAA140380184	OK	0	BB_8_1	batch
    CC	22/04/2015 17:50	AAA140380186	OK	0	BB_5_1	batch
    CC	22/04/2015 17:50	AAA140380187	OK	0	BB_1_1	batch
    CC	22/04/2015 20:50	AAA140386716	OK	0	BB_2_1	batch
    CC	22/04/2015 20:50	AAA140386717	OK	0	BB_3_1	batch
    CC	22/04/2015 20:50	AAA140386718	OK	0	BB_4_1	batch
    CC	22/04/2015 20:50	AAA140386719	OK	0	BB_2_1	batch
    CC	22/04/2015 20:50	AAA140386720	OK	0	BB_3_1	batch
    CC	22/04/2015 20:50	AAA140386722	OK	0	BB_4_1	batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat tmp.lst |awk 'BEGIN {FS=" "} {print $4}'
    AAA140380170
    AAA140380176
    AAA140380178
    AAA140380184
    AAA140380186
    AAA140380187
    AAA140386716
    AAA140386717
    AAA140386718
    AAA140386719
    AAA140386720
    AAA140386722

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat tmp.lst |awk 'BEGIN {FS=" "} {print $7}'
    BB_4_1
    BB_7_1
    BB_4_1
    BB_8_1
    BB_5_1
    BB_1_1
    BB_2_1
    BB_3_1
    BB_4_1
    BB_2_1
    BB_3_1
    BB_4_1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat tmp.lst |awk 'BEGIN {FS=" "} {print $4 "_" $7}'
    AAA140380170_BB_4_1
    AAA140380176_BB_7_1
    AAA140380178_BB_4_1
    AAA140380184_BB_8_1
    AAA140380186_BB_5_1
    AAA140380187_BB_1_1
    AAA140386716_BB_2_1
    AAA140386717_BB_3_1
    AAA140386718_BB_4_1
    AAA140386719_BB_2_1
    AAA140386720_BB_3_1
    AAA140386722_BB_4_1


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $( cat tmp.lst |awk 'BEGIN {FS=" "} {print $4 "_" $7}'|awk 'BEGIN {FS="_"} {print $2 $3}' ); do echo $i;done
    BB4
    BB7
    BB4
    BB8
    BB5
    BB1
    BB2
    BB3
    BB4
    BB2
    BB3
    BB4

    A la suite de cette commande je souhaiterais faire une | grep en utilisant la variable $4 qui n'existe plus à la suite de la concaténation de AWK

    Merci de votre aide

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    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 276
    Points : 12 721
    Points
    12 721
    Par défaut
    Bonjour,

    Pas bien:
    Bien:
    Pas bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{print $4}' fichier
    Bien:
    awk est à utiliser dans le cas de test complexe, comme par exemple le grep que tu veux faire après, ici tout ce que tu demandes peut-être fais en un seul script awk...
    Cordialement.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat /tmp/test.txt
    CC 22/04/2015 17:50 AAA140380170 OK 0 BB_4_1 batch
    CC 22/04/2015 17:50 AAA140380176 OK 0 BB_7_1 batch
    CC 22/04/2015 17:50 AAA140380178 OK 0 BB_4_1 batch
    CC 22/04/2015 17:50 AAA140380184 OK 0 BB_8_1 batch
    CC 22/04/2015 17:50 AAA140380186 OK 0 BB_5_1 batch
    CC 22/04/2015 17:50 AAA140380187 OK 0 BB_1_1 batch
    CC 22/04/2015 20:50 AAA140386716 OK 0 BB_2_1 batch
    CC 22/04/2015 20:50 AAA140386717 OK 0 BB_3_1 batch
    CC 22/04/2015 20:50 AAA140386718 OK 0 BB_4_1 batch
    CC 22/04/2015 20:50 AAA140386719 OK 0 BB_2_1 batch
    CC 22/04/2015 20:50 AAA140386720 OK 0 BB_3_1 batch
    CC 22/04/2015 20:50 AAA140386722 OK 0 BB_4_1 batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ awk -F'[_ ]' '{print $7$8$4;}' /tmp/test.txt
    BB4AAA140380170
    BB7AAA140380176
    BB4AAA140380178
    BB8AAA140380184
    BB5AAA140380186
    BB1AAA140380187
    BB2AAA140386716
    BB3AAA140386717
    BB4AAA140386718
    BB2AAA140386719
    BB3AAA140386720
    BB4AAA140386722
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Faire la même chose de différentes façons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     awk '{ print $4 "_" substr($7,"0","2") substr($7,"4","1") } ' /tmp/file.txt

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour,

    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
    $ cat /tmp/test.txt
    CC 22/04/2015 17:50 AAA140380170 OK 0 BB_4_1 batch
    CC 22/04/2015 17:50 AAA140380176 OK 0 BB_7_1 batch
    CC 22/04/2015 17:50 AAA140380178 OK 0 BB_4_1 batch
    CC 22/04/2015 17:50 AAA140380184 OK 0 BB_8_1 batch
    CC 22/04/2015 17:50 AAA140380186 OK 0 BB_5_1 batch
    CC 22/04/2015 17:50 AAA140380187 OK 0 BB_1_1 batch
    CC 22/04/2015 20:50 AAA140386716 OK 0 BB_2_1 batch
    CC 22/04/2015 20:50 AAA140386717 OK 0 BB_3_1 batch
    CC 22/04/2015 20:50 AAA140386718 OK 0 BB_4_1 batch
    CC 22/04/2015 20:50 AAA140386719 OK 0 BB_2_1 batch
    CC 22/04/2015 20:50 AAA140386720 OK 0 BB_3_1 batch
    CC 22/04/2015 20:50 AAA140386722 OK 0 BB_4_1 batch
    $ awk -F'[_ ]' '{print $7$8$4;}' /tmp/test.txt
    BB4AAA140380170
    BB7AAA140380176
    BB4AAA140380178
    BB8AAA140380184
    BB5AAA140380186
    BB1AAA140380187
    BB2AAA140386716
    BB3AAA140386717
    BB4AAA140386718
    BB2AAA140386719
    BB3AAA140386720
    BB4AAA140386722
    Merci,
    Ta commande ne marche pas chez moi car j'ai des tabulations au lieu des espaces.
    Comment faire pour prendre en compte à la fois espaces et tabulations ?

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ cat /tmp/test.txt
    CC      22/04/2015 17:50 AAA140380170 OK 0 BB_4_1 batch
    CC      22/04/2015 17:50 AAA140380176 OK 0 BB_7_1 batch
    CC      22/04/2015 17:50 AAA140380178 OK 0 BB_4_1 batch
    CC      22/04/2015 17:50 AAA140380184 OK 0 BB_8_1 batch
    CC      22/04/2015 17:50 AAA140380186 OK 0 BB_5_1 batch
    CC      22/04/2015 17:50 AAA140380187 OK 0 BB_1_1 batch
    CC      22/04/2015 20:50 AAA140386716 OK 0 BB_2_1 batch
    CC      22/04/2015 20:50 AAA140386717 OK 0 BB_3_1 batch
    CC      22/04/2015 20:50 AAA140386718 OK 0 BB_4_1 batch
    CC      22/04/2015 20:50 AAA140386719 OK 0 BB_2_1 batch
    CC      22/04/2015 20:50 AAA140386720 OK 0 BB_3_1 batch
    CC      22/04/2015 20:50 AAA140386722 OK 0 BB_4_1 batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ awk -F'[_ \t]' '{print $7$8$4;}' /tmp/test.txt
    BB4AAA140380170
    BB7AAA140380176
    BB4AAA140380178
    BB8AAA140380184
    BB5AAA140380186
    BB1AAA140380187
    BB2AAA140386716
    BB3AAA140386717
    BB4AAA140386718
    BB2AAA140386719
    BB3AAA140386720
    BB4AAA140386722
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Utiliser une variable avec cette commande awk
    Par gavino dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 30/03/2015, 11h17
  2. Option NR de la commande AWK
    Par tux2005 dans le forum Linux
    Réponses: 5
    Dernier message: 20/09/2010, 14h25
  3. Commande awk
    Par ujoodha dans le forum Linux
    Réponses: 1
    Dernier message: 01/12/2005, 14h34
  4. Réponses: 11
    Dernier message: 12/04/2005, 14h08
  5. Réponses: 2
    Dernier message: 14/05/2004, 14h32

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