grep组合-f和-E

grep组合-f和-E,grep,Grep,我想将模式文件的内容与正则表达式相结合,即grep-e-f 输入文件的格式为 2 List_of_anthropologists<!!>Q1279970 3 List_of_Governors_of_Alabama<!!>Q558677 2027476 12th_Dalai_Lama<!!>Q25240 etc.. 我可以手动输入“13th_Dali_Lama”模式使其工作 但是我如何组合-f选项,以便用模式文件中的行替换十三世达赖喇嘛?使用GNU

我想将模式文件的内容与正则表达式相结合,即grep-e-f

输入文件的格式为

2   List_of_anthropologists<!!>Q1279970
3   List_of_Governors_of_Alabama<!!>Q558677
2027476 12th_Dalai_Lama<!!>Q25240
etc..
我可以手动输入“13th_Dali_Lama”模式使其工作


但是我如何组合-f选项,以便用模式文件中的行替换十三世达赖喇嘛?

使用GNU grep、GNU sed和bash:

grep -f <(sed 's/.*/\\b&\\b/' pattern_file) input_file

grep-f请将该示例输入的所需输出添加到您的问题中。输出应该是输入文件中与正则表达式匹配的行,并在模式文件中插入“^(\d*)(?:\t)来自模式文件的行”。例如:13th_Dalai_Lama应匹配:13th_Dalai_LamaQ558677但不列出13th_Dalai_LamaQ558677您的模式文件不包含输入文件中的子字符串。输入文件包含4M个条目,示例中不包含它,但是的,例如:205526 5th_Dalai_Lamaq5252在输入文件中。
grep -E  "^(\d*)(?:\t)13th_Dalai_Lama" input_file
grep -f <(sed 's/.*/\\b&\\b/' pattern_file) input_file