如何使用grep匹配空格或换行符

我想用一个单词grep一个文件,说“AAA”,它以空格或换行结束。 我知道如何单独写这个,如下所示,但在组合它们时遇到问题(从输出VVV AAAAAA VVV的意义上说)。

 $echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA$" >VVV AAA $echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA[[:space:]]" >AAA VVV 

我尝试过使用[] ,但没有成功..

如果您正在查找单词AAA后跟字符串中任何位置的空格,或者在行尾,请使用

 grep -P "AAA( |$)" 

您可以使用grep的-e选项来选择许多模式:

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

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

如果可以接受AAA以及任何其他非字母数字字符,则使用"AAA\b" 。 根据grep手册页 , \b匹配单词边缘的空字符串。

 $ echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA\b" AAA VVV VVV AAA