我想用一个单词 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
我试过使用[]
,但没有成功..
如果您要AAA
在字符串中的任何位置或行尾查找单词后跟空格,请使用
grep -P "AAA( |$)"
您可以使用-e
grep 的选项来选择多种模式:
grep -e "AAA$" -e "AAA[[:space:]]"
来自 grep 人:
-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\b"
也可以匹配 AAA 后跟任何其他非字母数字字符,则使用此选项。根据grep man pages,\b
匹配单词边缘的空字符串。
$ echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA\b"
AAA VVV
VVV AAA
我认为我们也可以将默认 grep 与 OR(\|) 一起使用
echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA$\|AAA "