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

Nat*_*tha 3 linux grep match

我真的很感激一些帮助:

我有一个很大的文件,我会给你一个如何格式化的例子:

name:lastname:email
Run Code Online (Sandbox Code Playgroud)

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

edward
michael
jenny
Run Code Online (Sandbox Code Playgroud)

我想将大文件中的名称列与输入文件中的名称匹配,并且仅当它完全匹配时(不区分大小写)

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

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

谁能帮我解决这个 grep 问题吗?

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

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

file.txt containing
^michael:
^bobert:
^billy:
Run Code Online (Sandbox Code Playgroud)

没有找到任何东西。

S M*_*han 7

grep -i -E -f inputfile namesfile > outputfile如果您的输入文件每行包含一个输入名称,按照您已经建议的模式,将执行您想要的操作:

^Michael:
^Jane:
^Tom:
Run Code Online (Sandbox Code Playgroud)

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

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

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

>:将输出重定向到文件

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

  • 也不要在输入文件中留下空白行,因为这将匹配输出中的所有行... (2认同)