使用grep在文件之间提取行

时间:2013-11-19 23:23:11

标签: database linux command-line grep

我有两个文件,file1.txt和file2。 TXT

file1.txt包含多个字符串,例如:

Little.1
Little.2
Little.3

并且file2.txt包含如下字符串:

XYQ Little.1 AGTAGT
ABC Little.12 ATCGCT
GDT Little.3 CGTAGT

我如何使用grep,以便当我使用file1来grep file2时,我只返回:

XYG Little.1 AGTAGT
GDT Little.3 CGTAGT

因为它们完全一致吗?

1 个答案:

答案 0 :(得分:1)

grep -w-f已完成此操作:

$ grep -wf file1 file2
XYQ Little.1 AGTAGT
GDT Little.3 CGTAGT

来自man grep

  

-f FILE, - file = FILE

     

从FILE获取模式,每行一个。空文件包含零   模式,因此没有匹配。 (-f由POSIX指定。)

     

-w, - word-regexp

     

仅选择包含构成整个单词的匹配项的行。   测试是匹配的子字符串必须在   该行的开头,或前面是非单词成分   字符。同样,它必须在行的末尾或   后跟一个非单词构成字符。字组成   字符是字母,数字和下划线。


请注意,如果没有-w,则会与其他情况相符:

$ grep -f file1 file2
XYQ Little.1 AGTAGT
ABC Little.12 ATCGCT
GDT Little.3 CGTAGT