grep来自输入文件,多行,而输入文件有^ name

时间:2014-08-19 01:22:55

标签: linux grep match

我真的很感激这方面的帮助:

我有一个庞大的文件,我将举例说明它的格式:

name:lastname:email

我有一个输入文件,其中包含许多名称,如下例所示:

edward
michael
jenny

我希望匹配从巨大文件到输入文件中名称的名称列,并且只有在完全匹配时才会匹配(不区分大小写)

一旦找到匹配项,我希望它输出带有所有匹配项的.txt

我想我可以使用类似^Michael:之类的命令来提供它。

任何人都可以帮我解决这个问题吗?

抱歉,如果我不太清楚它已经很晚了,我已经解决了这个问题

"Centos 5, "grep -i -E -f file.txt /root/dir2search >out.txt"

file.txt containing
^michael:
^bobert:
^billy:

没有找到任何东西。

1 个答案:

答案 0 :(得分:2)

如果您的输入文件每行包含一个输入名称,

grep -i -E -f inputfile namesfile > outputfile将按照您已建议的模式执行您想要的操作:

^Michael:
^Jane:
^Tom:

-i:不区分大小写的匹配

-E:正则表达式匹配(通常是默认设置,但我不知道您的环境是如何设置的)

-f:从文件中读取模式,每行一个模式

>:将输出重定向到文件

要将您描述的现有输入文件(以空格分隔的名称)转换为新格式,您可以使用: sed -r 's/([^ ]+)[ $]?/^\1:\n/g;s/\n$//g' inputfile > newinputfile