Unix 在文件中查找重复记录并将其输出到另一个文件中

Unix 在文件中查找重复记录并将其输出到另一个文件中,unix,awk,Unix,Awk,我在unix中有一个文件,有4列,如下所示: date1 2037 account1 5000 date2 2037 account1 5003 date3 2037 account1 5007 date4 2037 account1 5009 date5 2037 account2 5000 date6 2037 account2 5003 date7 2037 account2 5007 date8 2037 account2 5009

我在unix中有一个文件,有4列,如下所示:

date1 2037 account1 5000    
date2 2037 account1 5003    
date3 2037 account1 5007    
date4 2037 account1 5009    
date5 2037 account2 5000    
date6 2037 account2 5003    
date7 2037 account2 5007    
date8 2037 account2 5009
..
我想找到所有
account1
(第3列中的值),它们包含所有
500050035007009
值。
如果可能,我想将其放入另一个文件中,如下所示:

date1 2037 account1 5000    
date2 2037 account1 5003    
date3 2037 account1 5007    
date4 2037 account1 5009    
date5 2037 account2 5000    
date6 2037 account2 5003    
date7 2037 account2 5007    
date8 2037 account2 5009
..
日期1 2037帐户1 5000日期2 2037帐户1 5003

日期4 2037账户2 5000日期9 2037账户2 5003

。。 任何帮助都是有价值的。 谢谢

试试这句话:

awk '{a[$3]=a[$3]?a[$3]FS$NF:$0}END{for(x in a)print a[x]}' file
使用示例数据,它将输出:

date1 2037 account1 5000 5003 5007 5009
date5 2037 account2 5000 5003 5007 5009

下面的
awk
可能会在同样的情况下帮助您

awk '!b[$3]++{c[++j]=$3} {a[$3]=a[$3]?a[$3] OFS $NF:$0} END{for(i=1;i<=j;i++){print a[c[i]]}}'   Input_file

如果文件已按第3个字段(帐户)排序:

输出:

date1 2037 account1 5000 date2 2037 account1 5003 date3 2037 account1 5007 date4 2037 account1 5009
date5 2037 account2 5000 date6 2037 account2 5003 date7 2037 account2 5007 date8 2037 account2 5009date8 2037 account2 5009

它可以工作,您可以将其修改为输出日期2037 account1 5000 date2 2037 account1 5003。。。date4 2037 account2 5000 date9 2037 account2 5003..@AlexincoAlex要实现这一点,您可以将我的代码中的
$NF
更改为
$0
date1 2037 account1 5000 date2 2037 account1 5003 date3 2037 account1 5007 date4 2037 account1 5009
date5 2037 account2 5000 date6 2037 account2 5003 date7 2037 account2 5007 date8 2037 account2 5009date8 2037 account2 5009