Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  shell  >  正文 shell 字符串的属性

shell 字符串的属性

发布时间:2014-11-14   编辑:www.jquerycn.cn
本文介绍下,在shell编程中,有关字符串属性的一些知识,有需要的朋友参考下。

字符有可能是数字、字母、空格、其他特殊字符,而字符串有可能是它们任何一种或者多种的组合,在组合之后还可能形成一个具有特定意义的字符串,诸如邮件地址,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@jquerycn.cn | grep "[0-9a-zA-Z\.]*@[0-9a-zA-Z\.]"
test2007@jquerycn.cn
// 匹配URL地址(以http链接为例)
$ echo "http://www.jquerycn.cn/index.php?newsid=10135" | grep "http://[0-9a-zA-Z\./=?]*"
http://www.jquerycn.cn/index.php?newsid=10135

说明:
[1] /dev/null和/dev/zero是非常有趣的两个设备,它们都犹如一个黑洞,什么东西掉进去都会消失殆尽;后者则是一个能源箱,总能从那里取到0,直到退出。
[2] [[:space:]]是grep用于匹配空格或者TAB键类型字符串的一种标记,其他类似的标记请查看grep的帮助,man grep。
[3] 上面都是用grep来进行模式匹配,实际上sed, awk都可以用来做模式匹配。
[4] 如果仅仅想判断字符串是否为空,即判断字符串的长度是否为零,可以简单的通过test命令的-z选项来判断,具体用法见test命令,man test.

概要示例: 判断字符是否可打印?如何控制字符在终端的显示。
 

// 用grep判断某个字符是否为可打印字符
$ echo "\t\n" | grep "[[:print:]]"
\t\n
$ echo $?
0
$ echo -e "\t\n" | grep "[[:print:]]"
$ echo $?
1
// 用echo的-e选项在屏幕控制字符显示位置、颜色、背景等
$ echo -e "\33[31;40m" #设置前景色为黑色,背景色为红色
$ echo -e "\33[11;29H Hello, World\!" #在屏幕的第11行,29列开始打印字符串Hello,World!
// 在屏幕的某个位置动态显示当前系统时间
$ while :; do echo -e "\33[11;29H "$(date "+%Y-%m-%d %H:%M:%S"); done
// 用col命令过滤掉某些控制字符,在处理诸如script,screen等截屏命令的输出结果时,很有用
$ screen -L
$ cat /bin/cat
$ exit
$ cat screenlog.0 | col -b   # 把一些控制字符过滤后,就可以保留可读的操作日志

您可能感兴趣的文章:
js正则regexp对象属性之leftContext属性
shell 字符串的属性
awk截取某区域数据
shell 字符串查找与替换的方法详解
使用awk截取某区域的数据的例子
js正则regexp对象属性之rightContext属性
js正则regexp对象属性之lastMatch($&)属性
shell比较与测试的方法详解(图文)
shell截取字符串的例子
js 正则表达式中的input属性($_)RegExp对象属性

[关闭]