用两个参数精确地搜索grep



如何进行双参数grep (AND操作);查找包含成功和失败的所有行

,

1. succeeded, failed
2. failed, succeeded
3. failed,failed
4. succeeded, succeeded
5. failed
6. faileds
7. succeeded

我需要搜索返回包含单词"succeeded"one_answers"failed"的行,如第1、2和4行

非常简单:

grep succeeded | grep failed

另外:

grep 'succeeded.*failed|failed.*succeeded'

后一种方法不能很好地扩展(你最终会得到P(N, N)子条款和N词),但在处理词之间的相对位置时可以更灵活。

首先,我认为第4行不应该是结果。里面没有failed

grep 'succeeded' input|grep 'failed'

只需要一次遍历文件的几种不同方法:

awk '/succeeded/ && /failed/' file
sed -n '/succeeded/ {/failed/ p}' file
perl -ne 'print if /succeeded/ and /failed/' file

我希望grep -e succeeded -e failed file会工作,但它返回"一个或另一个"而不是"两者"。

查找与

在同一行中存在的两个单词
grep succeeded FILE | grep failed

grep succeeded FILE将从FILE中打印所有成功的行,然后grep failed将从grep succeeded FILE的结果中打印所有失败的行。因此,如果您使用管道将它们组合在一起,它将显示包含成功和失败的行。

grep 'failed' <(grep 'succeeded' inputFile)

最新更新