Probleme avec le script shell

Résolu/Fermé
amsy10 Messages postés 68 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 22 septembre 2021 - 18 oct. 2010 à 13:10
amsy10 Messages postés 68 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 22 septembre 2021 - 18 oct. 2010 à 16:56
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 18779 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 13 avril 2025 5 630
18 oct. 2010 à 15:11
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 68 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 22 septembre 2021
18 oct. 2010 à 16:06
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 18779 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 13 avril 2025 5 630
18 oct. 2010 à 16:14
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 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 898
18 oct. 2010 à 16:11
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 68 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 22 septembre 2021
18 oct. 2010 à 16:41
il ne reconnais pas le $f1
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 898
18 oct. 2010 à 16:45
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 68 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 22 septembre 2021
18 oct. 2010 à 16:56
Merci beaucoup c'est ok ca marche maintenant
0