2016-03-14 39 views
0

我想用grep命令打印,只包含某些.txt文件中包含的C中的變量有效名稱。Grep - 正則表達式類:alpha:和:digit:包含空格

我的結果是這樣的:

[email protected]:~/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日和12月

操作系統:Ubuntu的LTS 12.04.5 grep的 版本:grep(GNU grep)2.10

無論如何感謝。

+0

默認情況下,'grep'打印找到匹配的整行。 '2月'符合你的模式,所以整行'1999年2月12日'被打印出來。 –

+0

謝謝你的答案! – Giannoutas

回答

0

你一定要逃逸BRE |並與錨$結束輸入模式,以確保全線匹配:

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

不過我建議使用character class,並減少你的模式:

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

我可以知道downvote的原因嗎? – anubhava