我有两个不同的文件:
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
。