Probleme avec le script shell

Résolu
Bonjour,

Bonjour
je voudrais une recherche dans un fichier par rapport un fichier quand je lance le script il me cherche la derniere ligne du fichier ce qui n'est pas normale.exemple: fichier a:le contenu
111111
222222
333333
et le fichier b
000000,2457879
111111,9586245
222222,4569874
333333,4569874
444444,1236541
555555,4562258

voila les deux fichier a doit forcement se trouver dans le fichier b
c'est comme ca que je lance le script.
./SERIAL.sh fichier a fichier b &
et il ne m'envoi que la derniere ligne
voila mon script

#!/bin/bash
f1=$1
f2=$2

for i in 'cat $f1'
do
grep $i $f2 | awk -F, '{print $2","$1}' >> Code_en_serie.txt

done


cordialement

5 réponses

  1. il ne reconnais pas le $f1
    1. Modérateur
      Bizarre ;-\

      Quel système ?

      $ ls
      a  b  foo*
      
      $ cat a
      111111
      222222
      333333
      
      $ cat b
      000000,2457879
      111111,9586245
      222222,4569874
      333333,4569874
      444444,1236541
      555555,4562258
      
      $ cat foo
      #!/bin/bash
      f1=$1
      f2=$2
      
      for i in $(cat $f1)
      do
      grep $i $f2 | awk -F, '{print $2","$1}' >> Code_en_serie.txt
      
      done
      
      $ ./foo a b
      
      $ cat Code_en_serie.txt
      9586245,111111
      4569874,222222
      4569874,333333
      
      $
      
  2. Modérateur
    Salut,

    Y'a une erreur de syntaxe dans ton code :
    for i in 'cat...'
    à remplacer par
    for i in $(cat $f1)

    #!/bin/bash
    f1=$1
    f2=$2
    
    for i in $(cat $f1)
    do
    grep $i $f2 | awk -F, '{print $2","$1}' >> Code_en_serie.txt
    
    done 
    1. je n'ai pas compris ton script le NF c'est quoi au juste
      tu as compri mon souci ce awk pourra l'executer
      1. Contributeur
        NF représente le nombre de champs par ligne. Avec NF==1 on traite fichiera et avec NF > 1 on traite fichierb
    2. Contributeur
      hello
      on peut tout faire dans awk
      $ awk -F, 'NF==1 {x[$1]=$1} NF > 1 {if(!x[$1])print $2 FS $1}' fichiera fichierb
      2457879,000000
      1236541,444444
      4562258,555555
      $