Grep 基于唯一ID统计文件中的文本匹配

Grep 基于唯一ID统计文件中的文本匹配,grep,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|XY101

我有一个文件,其格式如下:

    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
我试图在散列唯一的地方计算TRUE的数目

我已使用以下命令成功地计算了TRUE的总数:

grep -c "TRUE" file.psv
然而,我不确定在散列是唯一的情况下如何计算“TRUE”。 因此,上表中“TRUE”的计数应该只返回2


谢谢

我会用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
)进行计数。

Hi@Kent,谢谢您的回答。在第一个解决方案中,您在哪里指定要在“Hash_Akey”列中查找唯一值?我猜是“NF-1”