免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2695 | 回复: 14
打印 上一主题 下一主题

帮新手看看同志们 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-01 13:34 |只看该作者 |倒序浏览
#!/bin/bash

echo "-----------start-------------"

echo "$1"
echo $1 | awk '{if($1~/^[0-9]{1,5}$/) { print"number";} else {print"char";}}'

echo "------------end--------------"



{cbge0}% ./check.sh 12345
-----------start-------------
12345
char
------------end--------------
{cbge0}%


为什么不能正确判断参数都是数字啊~~~

[ 本帖最后由 fssf0078 于 2008-4-1 13:59 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-04-01 13:47 |只看该作者
gawk


  1. awk --re-interval '{if($0~/^[0-9]{1,5}$/){print $0}else{print "char"}}'
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2008-04-01 13:49 |只看该作者
echo $1 | awk --posix '{if($1~/^[0-9]{1,5}$/) { print"number";} else {print"char";}}'

论坛徽章:
0
4 [报告]
发表于 2008-04-01 14:00 |只看该作者
二位~~以上结果都是显示的char阿~~可是参数跟的是12345阿~~原因在哪 ~~

论坛徽章:
0
5 [报告]
发表于 2008-04-01 14:05 |只看该作者
#!/bin/ksh

echo "--------------strat--------------"

echo "$1"

echo $1 |awk '{ if ( $1 ~ /^[0-9]{1,5}$/) { print "number"; } else { print "char"; }}'

echo "--------------end----------------"

it's no problem!
try it agian!

论坛徽章:
0
6 [报告]
发表于 2008-04-01 14:11 |只看该作者
如果参数12345 成功和^[0-9]{1,5}$匹配的话~~按照逻辑来说不是应该输出的是number吗
为什么会输出char??

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2008-04-01 14:13 |只看该作者
/home/lee#read ;echo $REPLY|awk --posix '{if($1~/^[0-9]{1,5}$/) { print"number";} else {print"char";}}'
12345
number
/home/lee#read ;echo $REPLY|awk --posix '{if($1~/^[0-9]{1,5}$/) { print"number";} else {print"char";}}'
1w234
char
/home/lee#read ;echo $REPLY|awk --posix '{if($1~/^[0-9]{1,5}$/) { print"number";} else {print"char";}}'
asdf
char
/home/lee#awk --version
GNU Awk 3.1.1
Copyright (C) 1989, 1991-2002 Free Software Foundation

论坛徽章:
0
8 [报告]
发表于 2008-04-01 14:20 |只看该作者
read ;echo $REPLY|awk --re-interval '{if($0~/^[0-9]{1,5}$/){print $0}else{print"char"}}'
12345
12345
read ;echo $REPLY|awk --re-interval  '{if($0~/^[0-9]{1,5}$/){print $0}else{print"char"}}'
123456
char

$ awk --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.

[ 本帖最后由 davistar 于 2008-4-1 14:21 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-04-01 15:52 |只看该作者
{cbge0}% cat check.sh
#!/bin/sh

echo "-----------start-------------"

echo $1 | awk  '{if($1~ /"^\d{1,5}$"/) { print"number";} else {print"char";}}'
echo
echo $1 | awk  '{if($1~/^[0-9][0-9][0-9][0-9][0-9]$/) { print"number";} else {print"char";}}'
echo
echo $1|awk --posix '{if($1~/^[0-9]{1,5}$/) { print"number";} else {print"char";}}'

echo "------------end--------------"jhetc{cbge0}%

我做的一个小实验~~呵呵~~

{cbge0}%
{cbge0}%
{cbge0}% ./check.sh 12345
-----------start-------------
char

number

char
------------end--------------

结果如上~~

{cbge0}%
{cbge0}%
{cbge0}% awk --version

察看版本会阻塞~~不知道为啥~~
望指教~~

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2008-04-01 15:57 |只看该作者
那就用grep吧, 这样试一试
read;echo $REPLY|grep -q '^\<[0-9]\+\>$' && echo number || echo char
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP