grep两个文件,但找不到一些单词

时间:2015-01-25 13:59:03

标签: bash sed grep

我在fileA中有一个名单列表,并希望在fileB.csv中获取包含名称中的名称的那些行。

fileA看起来像

noah
liam
jacob
mason
william

fileB.csv看起来像

noah,1
liam,2
yoyoyo,44
williams,4
william,5

我想输出

noah,1
liam,2
william,5

但我得到了

noah,1
liam,2

我做的是(sed 's/$/,/' fileA | grep -wf fileA fileB.csv) 甚至grep -wf fileA fileB.csv

但是,我不知道为什么有些单词没有显示出来。

1 个答案:

答案 0 :(得分:1)

您正在使用fileA修改sed,以便您可以将此修改后的文件用作grep的模式。如果是这样,您需要正确地执行此操作:

grep -wf <(sed 's/$/,/' fileA) fileB.csv

否则,sed ... | grep -wf fileA fileB只是在执行grep命令,而没有考虑清理文件的sed部分。

但是,没有必要添加任何逗号来使其工作,因为仅此一项就可以了:

$ grep -wf fileA fileB
noah,1
liam,2
william,5

另请注意,使用-w时,添加逗号会破坏匹配:

$ echo "hello,bye" | grep -w "hello"
hello,bye
$ echo "hello,bye" | grep -w "hello,"
$