我在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
但是,我不知道为什么有些单词没有显示出来。
答案 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,"
$