1

如何使用两个参数(操作 AND)进行 grep;找到包含单词的所有行都完全成功和失败。

例如:

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

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

4

5 回答 5

4

很简单:

grep succeeded | grep failed

或者:

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

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

于 2013-06-05T15:11:19.927 回答
2

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

grep 'succeeded' input|grep 'failed'
于 2013-06-05T15:12:19.337 回答
1

用 AND 对存在于同一行的 2 个单词进行 grep

grep succeeded FILE | grep failed

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

于 2013-06-05T15:32:13.717 回答
1

几种不同的方法只需要一次通过文件:

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

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

于 2013-06-05T16:01:55.293 回答
0
grep 'failed' <(grep 'succeeded' inputFile)
于 2013-06-05T15:52:11.577 回答