2017-02-27 71 views
0

我的UNIX非常生疏,但我想要的是在UNIX中搜索包含“generate”和“process”文本中两个单独单词的文件,但两个单词都在同一行?在文本中查找包含两个单独单词的文件

我知道有些脚本文件包含脚本作者及其在脚本顶部标注的功能的详细信息。例如,一个这样的脚本的开始包含以下内容;

功能:产生销售加班过程

我试图像下面的(再次我的UNIX是生锈)

grep -rwl . -e "generate" | "process" 

但是这给了错误,无法识别的命令

我要的是东西进度文件列表像;

salesovertime1.p

salestravel1.p

salesexpenses1.p

salesexpenses2.p

+0

你碰巧有什么版本的'grep'?你能输出'grep --version'并将其粘贴到这里吗? – Inian

+0

你也可以发布你的需求与一个适当的例子,如你的输入和你想要得到的确切输出? – Inian

+0

@Inian我已经添加了尽可能多的信息。不知道如何找到Grep的版本,但我认为我们正在运行Solaris 10 – AJF

回答

0

如果你搜索文件,然后find是合适的,然后你可以用grep筛选:

find . -exec grep -H generate {} \; 2> /dev/null | grep process 

会递归查找当前目录中的每个文件,然后过滤包含单词“generate”的过滤器,并再次使用包含单词“process”的过滤器过滤该过滤器。使用选项-H(GNU grep)输出文件名,错误消息开始重定向到/dev/null

现在,如果你只想要的文件名,你可以使用:

find . -exec grep -H generate {} \; 2> /dev/null | grep process | cut -f1 -d\: 

如果你想要的“生成”,并在同一个文件,但在不同线路上“过程”,下面会做:

grep process `find . -exec grep -H generate {} \; 2> /dev/null | cut -f1 -d\:` 2> /dev/null | cut -f1 -d\: 

find生成一个文件列表,该文件列表用于grep反对并提取重新指向错误的文件名。

+1

而不是重定向错误,你可能想'找到。 -type f -exec ...'。您仍会收到有关权限问题的错误消息,但目录错误将被删除。 –

+0

这两种混合...谢谢 –

+0

@ Jean-BaptisteYunès感谢你让 - 我应该在我原来的问题中说我正在寻找在同一行上有两个词的文件! – AJF

相关问题