繁体   English   中英

如何仅在UNIX中以制表符分隔的文件中保留唯一的那些行

[英]How to keep only those rows which are unique in a tab-delimited file in unix

在此,如果第二个值相同,则认为两行是多余的。 是否有任何unix / linux命令可以实现以下目的。

1   aa
2   aa
1   ss
3   dd
4   dd

结果

1   aa
1   ss
3   dd

我通常使用以下命令,但是它无法实现我想要的功能。

sort -k2 /Users/fahim/Desktop/delnow2.csv | uniq

编辑:

我的文件大约有2500万行:使用@Steve建议的解决方案的时间:33秒。

$date; awk -F '\t' '!a[$2]++' myfile.txt  > outfile.txt; date
Wed Nov 27 18:00:16 EST 2013
Wed Nov 27 18:00:49 EST 2013

排序和唯一性花费太多时间。 等待5分钟后我退出了。

也许这就是您要寻找的:

awk -F "\t" '!a[$2]++' file

结果:

1   aa
1   ss
3   dd

我了解您希望第二个字段按唯一顺序排序文件。 您需要添加-u进行排序以实现此目的。

sort -u -k2 /Users/fahim/Desktop/delnow2.csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM