Probleme avec le script shell

Résolu
amsy10 Messages postés 78 Statut Membre -  
amsy10 Messages postés 78 Statut Membre -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
    $  
    
    0
  2. amsy10 Messages postés 78 Statut Membre
     
    je n'ai pas compris ton script le NF c'est quoi au juste
    tu as compri mon souci ce awk pourra l'executer
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      NF représente le nombre de champs par ligne. Avec NF==1 on traite fichiera et avec NF > 1 on traite fichierb
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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 
    0
  4. amsy10 Messages postés 78 Statut Membre
     
    il ne reconnais pas le $f1
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
      
      $
      
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amsy10 Messages postés 78 Statut Membre
     
    Merci beaucoup c'est ok ca marche maintenant
    0