我真的很感激一些帮助:
我有一个很大的文件,我会给你一个如何格式化的例子:
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)
没有找到任何东西。
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