Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

find lines from one file in another

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.

like image 344
GFkw Avatar asked Sep 06 '25 03:09

GFkw


2 Answers

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

comm -12 file1.txt file2.txt > newlist.txt
like image 94
slass100 Avatar answered Sep 08 '25 11:09

slass100


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.

like image 42
Walter A Avatar answered Sep 08 '25 09:09

Walter A