如何用两个参数做一个grep(操作AND);找到包含该单词的所有行都成功完成并失败。
EG:
1. succeeded, failed
2. failed, succeeded
3. failed,failed
4. succeeded, succeeded
5. failed
6. faileds
7. succeeded
我需要搜索返回包含“成功”和“失败”字样的行,如第1,2和4行所示
答案 0 :(得分:4)
很简单:
grep succeeded | grep failed
可替换地:
grep 'succeeded.*failed\|failed.*succeeded'
后一种方法不能很好地扩展(你最终得到P(N, N)
子句带有N
个单词),但在处理单词之间的相对位置等事情时可以更灵活。
答案 1 :(得分:2)
首先,我认为第4行不应该是结果。其中没有failed
。
grep 'succeeded' input|grep 'failed'
答案 2 :(得分:1)
使用AND
在同一行上存在2个单词grep succeeded FILE | grep failed
grep succeeded FILE
将从FILE打印所有已成功加入的行,然后grep failed
将从grep succeeded FILE
的结果中打印出已失败的行。因此,如果使用管道组合这些,它将显示包含成功和失败的行。
答案 3 :(得分: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
可以工作,但它会返回"其中一个"而不是"两者都是"。
答案 4 :(得分:0)
grep 'failed' <(grep 'succeeded' inputFile)