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

时间:2012-11-04 15:58:57

标签: javascript java regex shell 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 

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

4 个答案:

答案 0 :(得分:18)

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

grep -P "AAA( |$)"

答案 1 :(得分:9)

您可以使用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.)

答案 2 :(得分:2)

如果可以接受,则匹配AAA,后跟任何其他非字母数字字符,请使用"AAA\b"。根据{{​​3}},\b匹配单词边缘的空字符串。

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

答案 3 :(得分:0)

我认为我们也可以使用带有 OR(\|) 的默认 grep

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