J'ai deux fichiers avec des colonnes. J'ai besoin d'imprimer le contenu du deuxième fichier SI le d'abord et les secondes colonnes des deux fichiers sont égaux. Ex:Comparer deux fichiers par deux colonnes correspondant
file1
Name1 123 blabla
Name1 456 bla
Name3 777 s
file2
Name1 123 something more
Name2 456 some words
Name4 111 no
Desired output:
Name1 123 something more
J'ai écrit ce code, mais il ne fonctionne que pour une colonne (la deuxième dans ce cas):
awk 'BEGIN{FS=OFS="\t"} NR == FNR {f[$2]; next;} $2 in f{print $0;}' file1 file2
J'ai trouvé quelque chose lié ici: comparing two columns in two files, mais je suis pas en mesure de trouver la bonne façon. J'ai essayé, mais ne fonctionne pas ..:
awk 'BEGIN{FS=OFS="\t"} NR == FNR {f[$1 FS $2]; next;} if($1 in f && $2 in f){print $0;}'
Merci à l'avance,
Cela fonctionne bien. Merci. Une petite question, seulement de la curiosité, savez-vous pourquoi mon code ne fonctionne pas? – cucurbit
Pour votre deuxième tentative, vous n'attribuez pas de valeur à 'f [$ 1 FS $ 2]'. Et que vous faisiez séparément avec ces deux valeurs: '$ 1 in f && $ 2 in f'. Certes, il n'y a jamais eu «f [1 $]» et «f [2 $]». Sur votre version, cela aurait pu être 'f [$ 1 FS $ 2] ++' ... 'if ($ 1 FS $ 2 dans f')' – konsolebox