我想用 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