【发布时间】:2010-11-10 15:33:48
【问题描述】:
以下脚本为我提供了第四个字段中唯一元素的数量。
awk -F'\t' '$7 ~ /ECK/ {print $4}' filename.txt | sort | uniq | wc -l
同样,我可以在 2nd Field 中找到独特的元素。但是我如何计算在第四个字段中但不在第二个字段中的唯一项目的数量。换句话说,第 4 个字段中没有出现在第 2 个字段中的唯一元素。
【问题讨论】:
以下脚本为我提供了第四个字段中唯一元素的数量。
awk -F'\t' '$7 ~ /ECK/ {print $4}' filename.txt | sort | uniq | wc -l
同样,我可以在 2nd Field 中找到独特的元素。但是我如何计算在第四个字段中但不在第二个字段中的唯一项目的数量。换句话说,第 4 个字段中没有出现在第 2 个字段中的唯一元素。
【问题讨论】:
你可以在 awk 中完成这一切
awk '
{
field_2[$2] = 1
field_4[$4] = 1
}
END {
for (item in field_4) {
if (!(item in field_2))
print item;
}
}
'
【讨论】:
这使用 Bash(或 ksh 或 zsh)进程替换,但如果您使用不支持该功能的 shell,您可以创建已排序的临时文件。
join -t $'\t' -1 4 -2 2 -v 1 -o 1.4 <(sort -k4 inputfile) <(sort -k2 inputfile) | sort -u | wc -l
【讨论】: