字符有可能是数字、字母、空格、其他特殊字符,而字符串有可能是它们任何一种或者多种的组合,在组合之后还可能形成一个具有特定意义的字符串,诸如邮件地址,url地址等。
如何判断字符的类型。
// 数字或者数字组合(能够返回结果,即程序退出状态是0,说明属于这种类型,反之不然)
$ i=5;j=9423483247234;
$ echo $i | grep [0-9]*
5
$ echo $j | grep [0-9]*
9423483247234
$ echo $j | grep [0-9]* >/dev/null
$ echo $?
0
// 字符组合(小写字母、大写字母、两者的组合)
$ c="A"; d="fwefewjuew"; e="fewfEFWefwefe"
$ echo $c | grep [A-Z]
A
$ echo $d | grep "[a-z]*"
fwefewjuew
$ echo $e | grep "[a-zA-Z]*"
fewfEFWefwefe
// 字母和数字的组合
$ ic="432fwfwefeFWEwefwef"
$ echo $ic | grep "[0-9a-zA-Z]*"
432fwfwefeFWEwefwef
// 空格或者Tab键等
$ echo " " | grep " "
$ echo -e "t" | grep "[[:space:]]" #[[:space:]]会同时匹配空格和TAB键
$ echo -e " t" | grep "[[:space:]]"
$ echo -e "t" | grep "<tab>" #<tab>为在键盘上按下TAB键,而不是字符<tab>
// 匹配邮件地址
$ echo test2007@jb200.com | grep "[0-9a-zA-Z.]*@[0-9a-zA-Z.]"
test2007@jb200.com
// 匹配URL地址(以http链接为例)
$ echo "http://www.jb200.com/index.php?newsid=10135" | grep "http://[0-9a-zA-Z./=?]*"
http://www.jb200.com/index.php?newsid=10135
说明:
[1] /dev/null和/dev/zero是非常有趣的两个设备,它们都犹如一个黑洞,什么东西掉进去都会消失殆尽;后者则是一个能源箱,总能从那里取到0,直到退出。
[2] [[:space:]]是grep用于匹配空格或者TAB键类型字符串的一种标记,其他类似的标记请查看grep的帮助,man grep。
[3] 上面都是用grep来进行模式匹配,实际上sed, linuxjishu/13830.html target=_blank class=infotextkey>awk都可以用来做模式匹配。
[4] 如果仅仅想判断字符串是否为空,即判断字符串的长度是否为零,可以简单的通过test命令的-z选项来判断,具体用法见test命令,man test.
概要示例: 判断字符是否可打印?如何控制字符在终端的显示。
您可能感兴趣的文章:
shell截取字符串的例子
有关字符串截取的shell脚本(多个方法)
shell 字符串的处理(截取,连接,匹配,替换,翻转)
shell字符串截取的几种方法
使用awk截取某区域的数据的例子
使用awk截取某时间段内的日志的单行命令
有关shell中字符串截取的方法总结
awk截取某区域数据
截取每小时随机的100条日志的shell脚本
使用awk截取日志-抽取条件在下面