J'ai essayé un certain nombre de solutions de Stack Overflow, mais sans résultat favorable. J'ai 2 fichiers et je souhaite supprimer les entrées de file1 qui sont mentionnées dans file2.

File1

1,email1@domain.com,9
9,email9@domain.com,1
8,email8@domain.com,6
2,email2@domain.com,1
15,email15@domain.com,3
6,email6@domain.com,1

File2

email1414@domain.com
email9@domain.com
email15@domain.com
email1919@domain.com

Résultat

1,email1@domain.com,9
8,email8@domain.com,6
2,email2@domain.com,1
6,email6@domain.com,1

Pourrais-tu m'aider s'il te plait? Ma tentative ratée:

awk -F',' 'NR==FNR{c[$1]++;next};c[$2] > 0' file2 file1
0
Anouar 24 juil. 2017 à 06:05

2 réponses

Meilleure réponse

Essayez de suivre awks et faites-moi savoir si cela vous aide.

Première solution:

awk 'FNR==NR{a[$0];next} ($2 in a){next} 1' File2 FS="," File1

Deuxième solution:

awk 'FNR==NR{a[$0];next} !($2 in a)' File2 FS="," File1
1
RavinderSingh13 24 juil. 2017 à 04:46

Voici mon fichier awk qui fait cela:

FNR==1 {NFILE++}

NFILE==1 {a[++n]=$0}

NFILE==2 {b[$0]}

END {for (i=1; i<=n; i++) if (!(a[i] in b)) print(a[i])}

Il imprime toutes les lignes de fichier1 qui ne sont PAS dans fichier2, selon votre exemple.

1
user31264 24 juil. 2017 à 03:36