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.
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 2Very simple command:
bash> grep "attrib1\|attrib3" <file.name> attrib1: someval11 attrib3: someval13 attrib1: someval21 attrib3: someval23 attrib1: someval31 attrib3: someval33 0Also egrep;
egrep "pattern1|pattern2|pattern3" file 1This works, with GNU grep 2.6.3
grep "attrib[13]" or
grep "^[^0-9]*[13]:" 3It 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.