如何使用shell脚本从文件中删除重复记录:

时间:2017-11-06 16:49:37

标签: shell

我想从文件中删除重复的订单项:

myfile.txt的

productItem1 ProductName11,ProdutctPrice27,ProductModelHP11,10/06/2016,ProductDescription-abc1,,,,,,01/11/2017
productItem2 ProductName12,ProdutctPrice99,ProductModelHP12,10/06/2016,ProductDescription-abc2,,,,,,09/02/2017
productItem3 ProductName13,ProdutctPrice87,ProductModelHP13,10/06/2016,ProductDescription-abc3,,,,,,09/02/2017
productItem1 ProductName11,ProdutctPrice27,ProductModelHP11,10/06/2016,ProductDescription-abc1,,,,,,01/12/2017
productItem1 ProductName11,ProdutctPrice27,ProductModelHP11,10/06/2016,ProductDescription-abc1,,,,,,01/11/2017

如上例所示,我想消除重复记录 - 在这种情况下, productItem1 有重复记录。我想根据这些字段删除重复项( ProductName11,ProdutctPrice27,ProductModelHP11 )。

我想保留最近约会的记录。在这个例子中,10/02/2017是greate,但它有两个条目 - 我想从两个条目中选择其中一个。

我们如何在shell脚本中消除 输出应为:newFile.txt

productItem2 ProductName12,ProdutctPrice99,ProductModelHP12,10/06/2016,ProductDescription-abc2,,,,,,09/02/2017
productItem3 ProductName13,ProdutctPrice87,ProductModelHP13,10/06/2016,ProductDescription-abc3,,,,,,09/02/2017
productItem1 ProductName11,ProdutctPrice27,ProductModelHP11,10/06/2016,ProductDescription-abc1,,,,,,01/12/2017

6 个答案:

答案 0 :(得分:0)

尝试

sort myfile.txt|uniq > newFile.txt

答案 1 :(得分:0)

试试这行:

awk '{a[$1]=$0}END{for(x in a) print a[x]}' file

答案 2 :(得分:0)

短GNU datamash -st, -g1,2,3 last 5 <file.txt > result.txt 解决方案:

result.txt

最终productItem1 ProductName11,ProdutctPrice27,ProductModelHP11,10/02/2017 productItem2 ProductName12,ProdutctPrice99,ProductModelHP12,09/02/2017 productItem3 ProductName13,ProdutctPrice87,ProductModelHP13,09/02/2017 内容:

flex: 1

答案 3 :(得分:0)

与@jprism一样,只需要添加'-u'( - unique)选项,如下所示:

    sort input.file | uniq -u > output.file

答案 4 :(得分:0)

你可以尝试这个

awk -F ' |,' '{t=$NF;gsub("/","",t);if(b[$1]<t){a[$1]=$0;b[$1]=t}}END{for(x in a)print a[x]}' infile

空格或,是字段分隔符。

取t中的最后一个字段,删除/得到一个数字,如果它大于之前的b [$ 1],则保留在数组b中。

同时,数组a保持整行a [$ 0]。

在最后的打印数组a

答案 5 :(得分:0)

使用HP12打印行以及接下来的两行。

awk '/HP12/{x=NR+2}(NR<=x){print}' file

productItem2 ProductName12,ProdutctPrice99,ProductModelHP12,10/06/2016,ProductDescription-abc2,,,,,,09/02/2017
productItem3 ProductName13,ProdutctPrice87,ProductModelHP13,10/06/2016,ProductDescription-abc3,,,,,,09/02/2017
productItem1 ProductName11,ProdutctPrice27,ProductModelHP11,10/06/2016,ProductDescription-abc1,,,,,,01/12/2017