开发者

Comparing two text files with each other

If I had to text files, for example:

file开发者_StackOverflow1.txt

apple
orange
pear
banana

file2.txt

banana
pear

How would I take all phrases on the lines of file2.txt away from file1.txt

So file1.txt would be left with:

apple
orange


grep -v -F -f file2.txt file1.txt

-v means listing only the lines of file1.txt that do not match the pattern, and -f means taking the patterns from the file, in this case — file2.txt. And -F — interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.

grep command is built-in on OS X and Linux. On Windows you'll have to install it; for example via Cygwin.


combine file1 not file2

On Debian and derivatives, combine can be found in the moreutils package.


If the files are huge (but must also be sorted), comm may be preferable to the more general grep solution proposed by Ivan since it operates line by line and thus, would not need to load the entirety of file2.txt into memory (or search it for each line).

comm -3 file1-sorted.txt file2-sorted.txt | sed 's/^\t//'

The sed command is needed to remove a leading tab inserted by comm.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜