根据唯一ID对文件中的文本匹配进行计数

时间:2018-11-12 13:27:02

标签: grep

我有一个具有以下格式的文件:

    LINK|Grouping_Indicator|ID_Dat|HASH_Akey|HASH_HUKey|
    FALSE|75768163|XY100|c5157cba1b5f20|817f8b50bc9
    FALSE|75768409|XY102|9f3de314a224f2|b686e4760f5
    TRUE|75769393|XY1005|ce0a50207cc86c|f9233c0b8e7
    TRUE|75769885|XY1012|ce0a50207cc86c|ef9eb8ea13f
    TRUE|75723124|XY1111|df0q45677ee89v|gt8qc9fb24g

我试图计算HASH_Akey是唯一的TRUE的数量。

我已使用以下命令设法算出TRUE总数:

grep -c "TRUE" file.psv

但是,我不确定HASH_Akey是唯一的情况下如何计算“ TRUE”。 因此,上表中“ TRUE”的计数应仅返回2

谢谢

1 个答案:

答案 0 :(得分:1)

我会用awk做到这一点:

 awk -F'|' '$1=="TRUE"{a[$(NF-1)]}END{print length(a)}' file

以您的示例为例,以上单行代码将打印2

您也可以使用以下方法做到这一点:

awk -F'|' '$1=="TRUE"&&!a[$(NF-1)]++' file|wc -l 

该行短了一点,但它开始另一个过程(wc)进行计数。