how to use grep to match with either whitespace or newline

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( |$)"

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

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.)

Tags:

Shell

Regex

Grep