Commande shell

Résolu
th.deudon Messages postés 449 Statut Membre -  
th.deudon Messages postés 449 Statut Membre -
Bonjour à tous, me revoila ;)

Existe il une commande permettant de print le nom du fichier dans lequel on est sur awk?

Il me semble que la commande match fera l'affaire pour la prochaine question, mais je n'ai pas compris son fonctionnement
il faudrait que j'arrive à concaténer d'une façon spéciale : deux fichiers
la ligne du fichier 2 doit aller à celle du fichier 1 contenant son élément ( $i ) si cette dernière a le même élément en $y , j'espère avoir été clair, merci :)

1 réponse

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    awk '{print FILENAME}'
    montre un exemple de données avant - après
    1
    1. th.deudon Messages postés 449 Statut Membre 16
       
      alors,
      fichier 1:
      blabla blibli toto1 bleble
      blabla blibli oto2 bleble
      blabla blibli toto3 bleble
      blabla blibli toto4 bleble
      blabla blibli toto5 bleble
      fichier 2:
      1 2 3 xxx/toto3.yyy
      4 5 6 xxx/toto2.yyy
      fichier final :
      blabla blibli toto1 bleble
      blabla blibli toto2 bleble 4 5 6
      blabla blibli toto3 bleble 1 2 3
      blabla blibli toto4 bleble
      blabla blibli toto5 bleble
      0
    2. th.deudon Messages postés 449 Statut Membre 16
       
      parfait, petite parenthèse : il fa print autant de fois qu'il y a de ligne ( donc a faire en begin ou en end )
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      essayer
      $ awk 'FNR==NR {t[++n]=$0; next} {printf $0; for(m=1; m<=n;){split(t[m++], a); if(a[4] ~ "/" $3 ".")printf OFS a[1] OFS a[2] OFS a[3]} print ""}'  fichier2 fichier1
      blabla blibli toto1 bleble
      blabla blibli toto2 bleble 4 5 6
      blabla blibli toto3 bleble 1 2 3
      blabla blibli toto4 bleble
      blabla blibli toto5 bleble
      $ 
      0
    4. th.deudon Messages postés 449 Statut Membre 16
       
      aie, désolé les fichiers ne peuvent plus etre de la meme forme :/
      fichier 1
      A B toto C D
      ...
      fichier 2
      .//blabla/blibli/toto.bloblo 4 5
      fichier 3
      A B toto C D 4 5


      vraiment desole :( vu que j'ai pas compris ton code, je sais pas le transformer ^^
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      a[4] devient a[1] (position de /xxx/toto.xxx) , on imprime $2 et $3
      awk 'FNR==NR {t[++n]=$0; next} {printf $0; for(m=1; m<=n;){split(t[m++], a); if(a[1] ~ "/" $3 ".")printf OFS a[2] OFS a[3] } print ""}' 
      0