Chinaunix
标题:
grep 或
[打印本页]
作者:
guocanwen
时间:
2013-05-17 11:07
标题:
grep 或
为什么grep -e '[0-9]\{5,\}' -e '[3-9][0-9]\{3\}' dddd 能够工作,而grep -e '[0-9]\{5,\}|[3-9][0-9]\{3\}' dddd 为什么不返回任何结果?
ps:
grep如何查找一个数字,这个数字大于某个值(比如3000),有没有更快捷的方法。只能用grep
作者:
wsleichao3
时间:
2013-05-17 11:26
留个脚印,期待大神门的解答~
作者:
代号:军刀
时间:
2013-05-17 11:55
grep -oP '[3-9]\d{3,}'
复制代码
作者:
rdcwayx
时间:
2013-05-17 12:18
试试这个
grep -P '[0-9]{5,}|[3-9][0-9]{3}' infile
复制代码
作者:
guocanwen
时间:
2013-05-17 12:47
回复
4#
rdcwayx
居然把版主引来了
能够实现需求,但是和grep -e '[0-9]\{5,\}' -e '[3-9][0-9]\{3\}'差不多,除了perl的正则更强大一点外。
作者:
dn833
时间:
2013-05-17 14:27
楼主可以自行Google一下BRE,ERE,PRE这3个正则流派
作者:
seesea2517
时间:
2013-05-17 15:10
# lz 的 1
[seesea@UC ~]$ echo -e "1234\n3333\n00000" | grep -e '[0-9]\{5,\}' -e '[3-9][0-9]\{3\}'
3333
00000
# lz 的 2
[seesea@UC ~]$ echo -e "1234\n3333\n00000" | grep -e '[0-9]\{5,\}|[3-9][0-9]\{3\}'
# lz 的 2 的修正
[seesea@UC ~]$ echo -e "1234\n3333\n00000" | grep -E '[0-9]{5,}|[3-9][0-9]{3}'
3333
00000
复制代码
作者:
代号:军刀
时间:
2013-05-17 15:33
回复
7#
seesea2517
我的木有这个问题
作者:
cao627
时间:
2013-05-17 15:53
@代号:军刀
你的会将3000也找出来,但要楼主如果要找大于3000的,等于3000的不要呢?
作者:
seesea2517
时间:
2013-05-17 16:07
回复
8#
代号:军刀
你的自然没有问题啦。lz 的是 e 和 E 的问题
作者:
cao627
时间:
2013-05-17 16:15
本帖最后由 cao627 于 2013-05-17 16:22 编辑
~$ echo "x13000x3000x3001x03000x03001x103000x010103000" | grep -oP '[0]*[1-9]+\d*[3-9]\d{3}|[0]*[3-9]\d{2}[1-9]'
13000
3001
03001
103000
010103000
复制代码
作者:
代号:军刀
时间:
2013-05-17 16:38
本帖最后由 代号:军刀 于 2013-05-17 16:41 编辑
回复
9#
cao627
grep -oP '(?!^[0-2]\d{3}$|^0*3000$|^0*[1-2]?\d{1,3}$)^\d+$
复制代码
作者:
代号:军刀
时间:
2013-05-17 16:48
回复
11#
cao627
4000就不会输出
作者:
wenhq
时间:
2013-05-17 16:49
回复
12#
代号:军刀
刀哥的Perl环视表达式玩的好牛啊!
awk '$0~/[3[1-9]\d\{2\}\d?*|[4-9]\d\{3\}\d?*]/'
这个不知道OK不?
作者:
代号:军刀
时间:
2013-05-17 16:59
回复
14#
wenhq
我的正则菜的,那正则来自mc大神的,你那不ok,awk正则好像不能使用\d
作者:
cao627
时间:
2013-05-17 17:09
@代号:军刀
是的
以修正
grep -oP '[0]*[1-9]+\d*\d{4}|[0]*3\d{2}[1-9]|\d*[4-9]\d{3}'
复制代码
作者:
wenhq
时间:
2013-05-17 17:17
回复
15#
代号:军刀
恩 我以为支持呢.记忆中是支持的.看来是错误的.
作者:
代号:军刀
时间:
2013-05-17 17:42
回复
16#
cao627
3330不会匹配
作者:
cao627
时间:
2013-05-17 18:18
本帖最后由 cao627 于 2013-05-17 18:47 编辑
@代号:军刀
是的 多谢找出问题!
再次修改如下:
grep -oP '0*[1-9]+\d*\d{4}|0*3\d{2}[1-9]|0*3[1-9]\d0|0*3\d[1-9]0|0*[4-9]\d{3}'
复制代码
作者:
ligangbin117
时间:
2013-11-26 11:00
6楼正解 你要这样grep -e '[0-9]\{5,\}\|[3-9][0-9]\{3\}' dddd
http://www.infoq.com/cn/news/201 ... f3b2dcf6d4de684257f
回复
1#
guocanwen
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2