Consider I have the following stream of data:

BODY1 attrib1: someval11 attrib2: someval12 attrib3: someval13 BODY2 attrib1: someval21 attrib2: someval22 attrib3: someval23 BODY3 attrib1: someval31 attrib2: someval32 attrib3: someval33 

I want to extract only attrib1 and attrib3 for each BODY, i.e.

attrib1: someval11 attrib3: someval13 attrib1: someval21 attrib3: someval23 attrib1: someval31 attrib3: someval33 

I tried

grep 'attrib1\|attrib3', according to this site but that returned nothing. grep attrib1 and grep attrib2 do return data but just for the single pattern specified.

7

5 Answers

grep -e 'attrib1' -e 'attrib3' file

From the man page :

-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. This can be used to specify multiple search patterns, or to protect a pattern beginning with a hyphen (-). (-e is specified by POSIX.)

Edit : Alternatively , you can save patterns in a file and use the -f option :

aman@aman-VPCEB14EN:~$ cat>patt attrib1 attrib3 aman@aman-VPCEB14EN:~$ grep -f patt test attrib1: someval11 attrib3: someval13 attrib1: someval21 attrib3: someval23 attrib1: someval31 attrib3: someval33 
2

Very simple command:

 bash> grep "attrib1\|attrib3" <file.name> attrib1: someval11 attrib3: someval13 attrib1: someval21 attrib3: someval23 attrib1: someval31 attrib3: someval33 
0

Also egrep;

egrep "pattern1|pattern2|pattern3" file 
1

This works, with GNU grep 2.6.3

grep "attrib[13]" 

or

 grep "^[^0-9]*[13]:" 
3

It depends on the shell you are into. grep -iw 'patter1\|patter2\|pattern3' works on bash shell where as it doesn't work on korn shell. For korn shell we might have to try grep -e pattern1 -e patter2 and so on.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy