我想用一个单词grep一个文件,说“AAA”,它以空格或换行结束。我知道如何单独写这个,如下所示,但在组合它们时遇到问题(从某种意义上说它输出VVV AAA
和AAA VVV
)。
$echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA$"
>VVV AAA
$echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA[[:space:]]"
>AAA VVV
我尝试过使用[]
,但没有成功..
答案 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 "