使用“grep”来匹配文件中的 ID 列表以与另一个文件匹配

使用“grep”来匹配文件中的 ID 列表以与另一个文件匹配

我一直在使用论坛上建议的各种格式,如下所示:

grep -f file1.txt file2.txt > ouput.txt

file1.txt一列中包含 ID 列表,例如:

15002345234 
15001234214

file2.txt包含制表符分隔的列,其中一列包含 ID,其他列包含其他信息。

1500349850 1 3 father

我尝试过 shell 循环awk以及sed其他帖子中建议的命令。但本质上我只得到一个 ID 的结果:

150982309750 1 2 2  4

它也总是相同的,而输出中应该有很多结果,例如:

150982309750 1 2 2  4
150563524856 1 3 2  2
150864364612 2 1 2  2

有什么想法我做错了吗?

答案1

我会

  • 添加-w仅匹配整个单词的选项
  • 添加-F固定字符串(非正则表达式)匹配的选项
  • 验证 file1 不使用\r\n行结尾——尾随\r会导致匹配失败。检查这个head file1.txt | od -c
grep -wFf <(sed 's/\r$//' file1.txt) file2.txt

相关内容