Commande shell

Résolu
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. Contributeur
    hello
    awk '{print FILENAME}'
    montre un exemple de données avant - après
    1
    1. 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. 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. Contributeur
      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. 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. Contributeur
      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