2010-11-10 33 views
1

Le script suivant indique le nombre d'éléments uniques dans le 4ème champ.Recherche d'éléments uniques sur deux rangées dans awk

awk -F'\t' '$7 ~ /ECK/ {print $4}' filename.txt | sort | uniq | wc -l 

De même, je peux trouver les éléments uniques dans 2nd Field. Mais comment puis-je calculer le nombre d'éléments uniques qui sont dans le 4ème champ mais pas dans le second champ. En d'autres termes, les éléments uniques dans le 4ème champ qui n'apparaissent pas dans le 2ème champ.

Répondre

2

Vous pouvez faire tout cela dans awk

awk ' 
    { 
     field_2[$2] = 1 
     field_4[$4] = 1 
    } 
    END { 
     for (item in field_4) { 
      if (!(item in field_2)) 
       print item; 
     } 
    } 
' 
0

Ceci utilise la substitution de processus Bash (ou ksh ou zsh), mais vous pouvez créer des fichiers temporaires qui sont triés si vous utilisez un shell qui ne le supporte pas.

join -t $'\t' -1 4 -2 2 -v 1 -o 1.4 <(sort -k4 inputfile) <(sort -k2 inputfile) | sort -u | wc -l