如何在同一文件中区分记录

时间:2017-11-17 18:18:39

标签: parsing awk sed

我有以下文件格式:

AAA-12345~TRAX~~AAAAAAAAAAAA111111ETC
AAA-12345~RCV~~BBBBBBBBBBBB222222ETC
BBB-78900~TRAX~~CCCCCCCCCCCC444444ETC
BBB-78900~RCV~~DDDDDDDDDDDD555555ETC
CCC-65432~TRAX~~HHHHHHHHHHHH888888ETC

所有线都是成对的,每对都是相同的单一〜。 有时像最后一个记录的孤儿有TRAX但没有RCV。 问题是:使用像sed或awk这样的bash实用程序或像grep或cut这样的命令我怎么才能找到并只显示孤儿?

1 个答案:

答案 0 :(得分:0)

使用awk

awk -F~ '{a[$1]+=1} END{for(key in a) if(a[key]==1){print key}}'

这只是加载第一个字段(由波浪号分割)作为数组的键,并在每次找到时递增该键的值。然后,当文件完成后,它会迭代数组并打印出只有1的键值。