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
A voir également:

5 réponses

dubcek Messages postés 19021 Statut Contributeur 5 637
 
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
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
dubcek Messages postés 19021 Statut Contributeur 5 637
 
NF représente le nombre de champs par ligne. Avec NF==1 on traite fichiera et avec NF > 1 on traite fichierb
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
amsy10 Messages postés 78 Statut Membre
 
il ne reconnais pas le $f1
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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