-1

我有一个包含以下数据的文件

文件名:sample.rcv.gz

数据:

title|currentDate|numberOfLines|
a|ID99900|Paul|Lee|
b|ID99900|New York|7890654|
c|ID99900|Driver|1232423|
a|ID99901|Jim|foo|
b|ID99901|California|1265789|
c|ID99901|Officer|3332424|
a|ID99902|Jean|duval|
b|ID99902|California|9865789|
c|ID99902|Officer|5552424|
a|ID99900|Philips|Chand|
b|ID99900|Delhi|6310654|
c|ID99900|Teacher|7653423|

其中 a,b,c 是表名。

如何查找同一张表的重复 ID?

谢谢

4

2 回答 2

0

这可以使它:

$ awk -F"|" 'a[$1,$2]++' file
a|ID99900|Philips|Chand|
b|ID99900|Delhi|6310654|
c|ID99900|Teacher|7653423|

更新

如果发现重复数据,你能告诉我如何停止 shell 吗?找到第一个重复项时停止/退出该过程,并回显带有重复 ID 和表名的消息。

示例:重复数据:表 A 中的 ID99900

这可以使它:

$ awk -F"|" 'a[$1,$2]++ {print "Duplicate data: "$2" in table "$1; exit}' file
Duplicate data: ID99900 in table a
于 2013-07-26T12:22:00.727 回答
0
awk -F"|" 'NR!=1{if($1$2 in a)print "Duplicate:",$1,$2;else a[$1$2]}' your_file

测试如下:

> cat temp
title|currentDate|numberOfLines|
a|ID99900|Paul|Lee|
b|ID99900|New York|7890654|
c|ID99900|Driver|1232423|
a|ID99901|Jim|foo|
b|ID99901|California|1265789|
c|ID99901|Officer|3332424|
a|ID99902|Jean|duval|
b|ID99902|California|9865789|
c|ID99902|Officer|5552424|
a|ID99900|Philips|Chand|
b|ID99900|Delhi|6310654|
c|ID99900|Teacher|7653423|
> awk -F"|" 'NR!=1{if($1$2 in a)print "Duplicate:",$1,$2;else a[$1$2]}' temp
Duplicate: a ID99900
Duplicate: b ID99900
Duplicate: c ID99900
> 
于 2013-07-26T13:28:47.533 回答