在Linux shell中,操作字符串,可以用awk、sed,功能强大,处理任何字符串都不用担心。
一、判断读取字符串值
复制代码代码示例:
[chengmo@localhost ~]$ echo ${abc-'ok'}
[chengmo@localhost ~]$ echo ${abc='ok'}
如果abc 没有声明“=" 还会给abc赋值。
复制代码代码示例:
[chengmo@localhost ~]$ var1=11;var2=12;var3=
[chengmo@localhost ~]$ echo ${!v@} var1 var2 var3 [chengmo@localhost ~]$ echo ${!v*} var1 var2 var3 ${!varprefix*}与${!varprefix@}相似,可以通过变量名前缀字符,搜索已经定义的变量,无论是否为空值。
二、字符串操作(长度,读取,替换)
1.长度
复制代码代码示例:
[web97@salewell97 ~]$ test='I love china'
[web97@salewell97 ~]$ echo ${#test} 12 ${#变量名}得到字符串长度
2.截取字串
复制代码代码示例:
[chengmo@localhost ~]$ test='I love china'
[chengmo@localhost ~]$ echo ${test:5} e china [chengmo@localhost ~]$ echo ${test:5:10} e china ${变量名:起始:长度}得到子字符串
3.字符串删除
复制代码代码示例:
[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ echo ${test%/*} ${变量名#substring正则表达式}从字符串开头开始配备substring,删除匹配上的表达式。 ${变量名%substring正则表达式}从字符串结尾开始配备substring,删除匹配上的表达式。 注意:${test##*/},${test%/*} 分别是得到文件名,或者目录地址最简单方法。
4.字符串替换
复制代码代码示例:
[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ echo ${test/\//\\} c:\windows/boot.ini [chengmo@localhost ~]$ echo ${test//\//\\} c:\windows\boot.ini ${变量/查找/替换值} 一个“/”表示替换第一个,”//”表示替换所有,当查找中出现了:”/”请加转义符”\/”表示。
三、性能比较
复制代码代码示例:
[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length $test);done;
速度相差上百倍,调用外部命令处理,与内置操作符性能相差非常大。 |