how to use grep to match with either whitespace or newline

前端 未结 3 567
孤街浪徒
孤街浪徒 2021-01-07 20:18

I want to grep a file with a word, say \"AAA\", and it ends with whitespace or newlines. I know how to write this seperately, as follows, but having problems in combining th

相关标签:
3条回答
  • 2021-01-07 20:31

    You can use the -e option of grep to select many patterns:

    grep -e "AAA$" -e "AAA[[:space:]]"
    

    From the grep man:

    -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.)
    
    0 讨论(0)
  • 2021-01-07 20:38

    Use "AAA\b" if it's acceptable to also match AAA followed by any other non-alphanumeric character. According to the grep man pages, \b matches the empty string at the edge of a word.

    $ echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA\b"
    AAA VVV
    VVV AAA
    
    0 讨论(0)
  • 2021-01-07 20:53

    If you are looking for word AAA followed by space anywhere in the string, or at the end of line, then use

    grep -P "AAA( |$)"
    
    0 讨论(0)
提交回复
热议问题