正则表达式类:alpha:和:d igit:包含空格



我想用 grep 命令打印,只打印 C 中包含在某个.txt文件中的变量有效名称。

我的结果是这样的:

it1238@snf-622:~/templab$ grep '^[[:alpha:]]([[:alpha:]]|_|[[:digit:]]){0,31}' textfile.txt
Feb 12, 1999
abc
alpha_beta
x
aQ
AS_xyz_XgZ
Jan 23, 2001

我不明白为什么在结果中显示带有空格的行,例如 1 月 23 日和 2 月 12 日。

操作系统: Ubuntu 12.04.5 LTSGrep 版本: grep (GNU grep) 2.10

无论如何,谢谢。

您需要

在 BRE 中转义|,并使用锚$结束输入模式以确保整行匹配:

grep '^[[:alpha:]]([[:alpha:]]|_|[[:digit:]]){0,31}$' file
abc
alpha_beta
x
aQ
AS_xyz_XgZ

但是,我建议使用字符类并将模式简化为:

grep '^[[:alpha:]][[:alnum:]_]{0,31}$' file
abc
alpha_beta
x
aQ
AS_xyz_XgZ

最新更新