在 awk 中查找两行中的唯一项

发布于 2024-10-01 18:09:47 字数 214 浏览 2 评论 0原文

以下脚本给出了第四个字段中唯一元素的数量。

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

同样,我可以在第二个字段中找到独特的元素。但是我如何计算第四个字段中但不在第二个字段中的唯一项目的数量。换句话说,第四个字段中的唯一元素不会出现在第二个字段中。

The following script gives me the number of unique elements in 4th field.

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

Similarly I can find the unique elements in 2nd Field. But how do I calculate the number of unique items that are in 4th field but not in the second field. In other words, the unique elements in 4th field that do not appear in the 2nd field.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回忆追雨的时光 2024-10-08 18:09:47

你可以在 awk 中完成这一切

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

You can do it all in awk

awk '
    {
        field_2[$2] = 1
        field_4[$4] = 1
    }
    END {
        for (item in field_4) {
            if (!(item in field_2)) 
                print item;
        }
    }
'
绾颜 2024-10-08 18:09:47

这使用 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

This uses Bash (or ksh or zsh) process substitution, but you could create temporary files that are sorted if you're using a shell that doesn't support that.

join -t 
\t' -1 4 -2 2 -v 1 -o 1.4 <(sort -k4 inputfile) <(sort -k2 inputfile) | sort -u | wc -l
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文