Unix 在文件中查找重复记录并将其输出到另一个文件中
我在unix中有一个文件,有4列,如下所示: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
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