user2456216
user2456216

Reputation: 142

search grep with two parameters exactly

how to do a grep with two parameter (operation AND); that find all lines that containt the word succeeded and failed exactly.

EG:

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

I need that search return the lines that containt words "succeeded" and "failed", as line 1, 2 and 4

Upvotes: 1

Views: 6871

Answers (5)

glenn jackman
glenn jackman

Reputation: 246807

A couple of different approaches that only require a single pass through the file:

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

I was hoping grep -e succeeded -e failed file would work, but it returns "one or the other" instead of "both".

Upvotes: 2

jaypal singh
jaypal singh

Reputation: 77105

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

Upvotes: 0

Gangadhar
Gangadhar

Reputation: 10516

To grep for 2 words existing on the same line with AND

grep succeeded FILE | grep failed

grep succeeded FILE will print all lines that have succeedded in them from FILE, and then grep failed will print the lines that have failed in them from the result of grep succeeded FILE. Hence, if you combine these using a pipe, it will show lines containing both succeeded and failed.

Upvotes: 1

l0b0
l0b0

Reputation: 58808

Very simple:

grep succeeded | grep failed

Alternatively:

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

The latter approach doesn't scale very well (you end up with P(N, N) subclauses with N words), but can be more flexible when handling things like relative position between the words.

Upvotes: 5

Kent
Kent

Reputation: 195059

first of all, I think line 4 should not be in result. there is no failed in it.

grep 'succeeded' input|grep 'failed'

Upvotes: 3

Related Questions