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

时间:2016-03-14 14:35:38

标签: regex grep whitespace alpha digits

我想用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 LTS grep版本:grep(GNU grep)2.10

非常感谢。

1 个答案:

答案 0 :(得分:3)

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

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

但我建议使用urlMappings并将您的模式缩减为:

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