find lines from one file in another

倖福魔咒の 提交于 2019-12-02 05:32:36

问题


So I have a file1.txt with a list of names, and a file2.txt with another list of names and I need a list with the names that are in both files.

I tried grep-f file1.txt file2.txt > newlist.txt but for some reason it isn't working, and the newlist.txt has names that are not in file1.

Does anyone know why this is happening and what i could do to get only the names that are on both lists?

thank you.


回答1:


If file1.txt and file2.txt are sorted, you could use 'comm'

comm -12 file1.txt file2.txt > newlist.txt



回答2:


If each the names in each list are unique, then you can find their intersection as follows:

sort file1.txt file2.txt | uniq -d > newlist.txt



回答3:


Your grep -f file1.txt file2.txt > newlist.txt is a nice thought, but will give too much hits when file1.txt has "s10" and file2.txt has "slass100". You want to match the complete line, so try

grep -Fxf file1.txt file2.txt > newlist.txt

This should be faster than a solution that requires sorting first.



来源:https://stackoverflow.com/questions/39729445/find-lines-from-one-file-in-another

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!