请教一个grep正则表达式字符串匹配的问题?

时间:2022-04-16 07:22:10
有这样一个文件date.txt
linux-mwok:~/shell> cat date.txt 
yrend.AS
mount
soa.PP
qp.RR
ST.CPP
sT.cpp

我键入如下命令 grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' date.txt 
目的是匹配文件中 以1-6个小写字母开头, .之后是1-2个大写字母 这样的字符串。
我的预期结果应该是匹配到: yrend.AS  soa.PP  qp.RR  这几个字符串,
可实际匹配结果是:yrend.AS  soa.PP  qp.RR   ST.CPPP   sT.cpp 

请大家帮忙看看我哪里写错了?

 

8 个解决方案

#1


奇怪
我用grep 2.9得到非预期的结果
而用grep 2.5.4得到预期的结果

#2


使用正则表达式时注意:对未做限定的其它后面的子串,也视为匹配的内容

#3


1楼的意思grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' date.txt 这个名令在不同的环境下结果不一样吗?
2楼的意思我似懂非懂,请帮忙看一下这个问题如何修改,错在哪里,谢谢!!

#4


晕死,你最后的一个限制条件只要求匹配1次或2次的吗,后面的你又没有要求,
ST.CPPP sT.cpp当然符合你的匹配要求,

#5


我要求以1-6个小写字母开头,为什么ST.CPP被匹配出来,他不是以大写开头的吗,我刚学shell脚本,有些愚钝,请多指教,不胜感激!

#6


要不把正确的匹配语句写一下贴出来,我研究研究,谢谢^_^

#7


^[a-z]{1,6}.[A-Z]{1,2}[\n]

#8


问题解决了 '^[a-z]\{1,6\}\.[A-Z]\{1,2\}$'  少了个$,  谢谢大家!

#1


奇怪
我用grep 2.9得到非预期的结果
而用grep 2.5.4得到预期的结果

#2


使用正则表达式时注意:对未做限定的其它后面的子串,也视为匹配的内容

#3


1楼的意思grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' date.txt 这个名令在不同的环境下结果不一样吗?
2楼的意思我似懂非懂,请帮忙看一下这个问题如何修改,错在哪里,谢谢!!

#4


晕死,你最后的一个限制条件只要求匹配1次或2次的吗,后面的你又没有要求,
ST.CPPP sT.cpp当然符合你的匹配要求,

#5


我要求以1-6个小写字母开头,为什么ST.CPP被匹配出来,他不是以大写开头的吗,我刚学shell脚本,有些愚钝,请多指教,不胜感激!

#6


要不把正确的匹配语句写一下贴出来,我研究研究,谢谢^_^

#7


^[a-z]{1,6}.[A-Z]{1,2}[\n]

#8


问题解决了 '^[a-z]\{1,6\}\.[A-Z]\{1,2\}$'  少了个$,  谢谢大家!