我想在一个文件中用词"AAA" grep ,并且它以空格或换行符结尾。 我知道如何单独编写它们,如下所示,但是在组合它们时遇到了问题(因为它会同时输出 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( |$)"
您可以使用grep的-e
选项来选择多个模式:
您可以使用grep的-e
选项来选择多个模式:
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后面跟任何非字母数字字符也可以接受的话,那么请使用"AAA\b"
。根据grep手册,\b
用于匹配单词边界上的空字符串。
$ echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA\b"
AAA VVV
VVV AAA
\b
也会匹配输入,例如AAA-BBB
。 - Ωmega我认为我们也可以使用默认的grep与OR(\|)
echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA$\|AAA "
egrep
来支持OR正则表达式运算符:egrep $'(AAA|VVV)($|[[:space:]])'
。 - Perette