有没有办法合并像:
这样的行7072;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7079;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7091;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7113;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7128;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7159;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7168;understand;-;F;18;IT;MN;2009-03-18 00:00:00
只有一个:
7072;understand;-;F;18;IT;MN;2009-03-18 00:00:00
基本上,我需要:
1.从第1列获取在2列n列(7072,7079,7091)上具有相同值的数字(ID)
2.删除重复项:只留下第一个(7072)
还有其他条目,如
7072;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7079;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7091;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7113;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7128;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7159;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7168;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
我只需要离开7072。 最后,似乎我必须得到这些数字并做替换,如
sed 's/^id;.*//g'
答案 0 :(得分:1)
要删除基于第二列(即understand
和mystify
)的重复项,您可以使用以下awk
脚本来保留该行的第一个副本并过滤其他所有内容:< / p>
awk -F';' '!seen[$2]++' file
对于如下文件:
$ cat file
7072;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7079;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7091;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7113;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7128;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7159;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7168;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7072;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7079;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7091;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7113;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7128;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7159;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
7168;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
它将产生一个输出(仅保留第一次出现并过滤其他所有内容)
$ awk -F';' '!seen[$2]++' file
7072;understand;-;F;18;IT;MN;2009-03-18 00:00:00
7072;mistify;-;F;18;IT;MN;2009-03-18 00:00:00
我们创建一个数组seen
并使用第二列作为键。当第一次看到这条线时,我们数组中它的计数为零,所以我们否定它,使得值为1,我们默认打印它。随后的所有时间值都将大于0,所以我们否定它使其为0并对其进行过滤。
如果这不是您想要的,请更新您的问题,以根据一些示例数据显示您所需的输出。
答案 1 :(得分:0)
除非我不理解您的问题,否则以下内容将为您提供所要求的输出:
$ uniq -s 4 input.txt |cut -d ";" -f 1
7072
7072