Using grep for multiple search patterns

前端 未结 5 1836
春和景丽
春和景丽 2020-12-05 11:26

Consider I have the following stream of data:

BODY1
attrib1:  someval11
attrib2:  someval12
attrib3:  someval13

BODY2
attrib1:  someval21
attrib2:  someval2         


        
相关标签:
5条回答
  • 2020-12-05 11:47

    very simple command:

    bash> grep  "attrib1\|attrib3" <file.name>
    

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

    0 讨论(0)
  • 2020-12-05 11:48

    Also egrep;

    egrep "pattern1|pattern2|pattern3" file
    
    0 讨论(0)
  • 2020-12-05 11:51

    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.

    0 讨论(0)
  • 2020-12-05 12:03

    This works, with GNU grep 2.6.3

    grep "attrib[13]"
    

    or

     grep "^[^0-9]*[13]:"
    
    0 讨论(0)
  • 2020-12-05 12:08

    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
    
    0 讨论(0)
提交回复
热议问题