首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux:从txt列表中检查重复项

Linux:从txt列表中检查重复项
EN

Stack Overflow用户
提问于 2015-03-05 17:44:12
回答 1查看 57关注 0票数 0

从列表列表中删除重复项的最佳方法是什么?

我有很多txt

代码语言:javascript
复制
List1.txt   
111  
222  
333  
444  
...  
代码语言:javascript
复制
List300.txt  
555  
666  
777  
888

现在我有了一个新的txt List301.txt,但需要检查重复项并将其删除

代码语言:javascript
复制
List301.txt  
111  
666  
999  
aaa  
bbb  

我试着像这样使用set:

代码语言:javascript
复制
cat List* |sort |uniq -u |xargs -i grep {} List* > ListFinal.txt  
List1.txt:222  
List1.txt:333  
List1.txt:444  
List300.txt:555  
List300.txt:777  
List300.txt:888  
List3.txt:999  
List3.txt:aaa  
List3.txt:bbb

有没有更好的方法来只列出999,aaa,bbb或者在List301.txt中删除111666

谢谢~

EN

回答 1

Stack Overflow用户

发布于 2015-03-05 18:05:21

如果您必须将新文件(List301)放在同一目录中,您可以使用gawk:

代码语言:javascript
复制
awk -v fn="f301.txt" 'FILENAME!=fn{a[$0];next}{b[$0]}
    END{for(x in b)if(!(x in a))print x}' *.txt

您只需更改fn值,以便在新文件上应用这一行代码。

如果您可以首先将新文件移动到其他目录,例如new/,您可以:

代码语言:javascript
复制
awk 'FILENAME!="new/f301.txt"{a[$0];next}!($0 in a)' *.txt new/f301.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28874609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档