如何通过与另一个数据文件比较来提取数据文件中的某些行? (合并)

如何通过与另一个数据文件比较来提取数据文件中的某些行? (合并)

我有两个不同的文件:

first file:
id1 19501112
id2 19831207
1d4 20001212
id6 20000101
id10 20061213
id11 20081212
id12 20100109
id13 20101218
id14 20101212
id15 20111111
id16 20150919
id20 20141415

和第二个文件:

id100
id2
id4
id44
id10
id16
id2000
id34
id5
id7

所以我想提取文件 1 中的那些行,这些行的 id 与第二个文件中的 id 相同。所以我希望我的输出文件看起来像:

id2 19831207
1d4 20001212
id10 20061213
id16 20150919

有什么建议吗?

答案1

使用 GNU grep:

grep -w -f file2.txt file1.txt 

这告诉grep我们仅匹配整个“单词”,并获取要从 file2.txt 中搜索的模式列表

如果 file2.txt 的内容有可能出现在 file1.txt 的其余行中,那么您可以使用 sed 和 bash 的进程替换,如下所示:

grep -f <(sed -e 's/^/^/ ; s/$/\\b/' file2.txt) file1.txt

这使用 sed 将每一idN行转换为 在^idN\b中使用之前grep -f

相关内容