Chinaunix

标题: 正则求解 [打印本页]

作者: mir620    时间: 2013-05-18 10:14
标题: 正则求解
SR5S1:/opt/osmu/script/tools # echo 010 |grep "[^0]" |grep "^[0-9]\{1,\}$"   (为什么已0开头也显示了,我加了以grep "[^0]")
010
SR5S1:/opt/osmu/script/tools #
SR5S1:/opt/osmu/script/tools # echo 10 |grep "[^0]" |grep "^[0-9]\{1,\}$"
10
SR5S1:/opt/osmu/script/tools #


其实我的目的就是不可以以0开头,但是可以是20、10
作者: 2008431    时间: 2013-05-18 11:13
  1. grep '^[1-9]0' file14
复制代码
是这样吗
作者: CyyKing    时间: 2013-05-18 11:14
echo 010|grep "^[^0]"

作者: lilanhao5566    时间: 2013-05-18 11:46
echo 010 |grep "^[^0]" |grep "^[0-9]\{1,\}$"
或者
echo 010 |grep  -v "^0" |grep "^[0-9]\{1,\}$"
作者: zooyo    时间: 2013-05-18 14:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: dn833    时间: 2013-05-20 08:59
  1. ^(?!0).*$
复制代码

作者: Shell_HAT    时间: 2013-05-20 09:07
^在不同的地方表达的意思也不同:
1、"[^0]",在方括号里面,表示对该集合取反。
2、"^[0-9]",在方括号左边,表示已某个字符串开头的行。

具体到你顶楼的两个命令,"[^0]"表示非零的字符。
实际上它没有起到任何作用,因为1是符合“非零”这个条件的
作者: 惟吾无为    时间: 2013-05-20 12:14
非0开头的数字。至少1位么?至少两位把*换成\+。
  1. echo 010 | grep "^[1-9][0-9]*$"
复制代码

作者: yuloveban    时间: 2013-05-20 12:50
回复 1# mir620


    grep "[^0]" 改成 grep "^[^0]" 就可以啦




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2