Shell字符串操作大全
2016-01-05 16:51
495 查看
1.字符串声明
一般字符串声明时,都会赋值str='test'
但是在脚本运行中,为了避免出现引用为声明的字符串变量时,可以在如下处理:
#如果str没声明,则输出DEFAULT echo "${str=DEFAULT}" #DEFAULT
2.字符串长度
str=‘abc,def,ghi,abcjkl’ #字符串长度 echo ${#str}
3.字符串截取
从位置position开始截取字符串格式: ${str:position}
#从第5个元素开始截取 echo ${str:5} #ef,ghi,abcjkl
从start开始,截取长度为length的字符串
格式:${str:start:length}
echo ${str:5:8} #ef,ghi,a
从str开头开始删除substring匹配
格式:${str#substring}或${str##substring}
str="abc,def,ghi,abcjkl" #从str开头开始删除最短的a*c匹配 echo ${str#a*c} #,def,ghi,abcjkl
#从str开头开始删除最长的a*c匹配 echo ${str##a*c} #jkl
从str结尾开始删除substring匹配
格式:${str%substring}或${str%%substring}
#从str结尾开始删除最短的b*l匹配 echo ${str%b*l} #abc,def,ghi,a
#从str结尾开始删除最长的b*l匹配 echo ${str%%b*l} #a
4.字符串替换
用replace替换字符串中第一个substring格式:${str/substring/replace}或者${str//substring/replace}
#用TEST替换字符串中第一个abc echo ${str/abc/TEST} #TEST,def,ghi,abcjkl
#用TEST替换字符串中所有的abc echo ${str//abc/TEST} #TEST,def,ghi,TESTjkl
#从str开头匹配,用TEST替换最长的a*c echo ${str/#a*c/TEST} #TESTjkl
#从str结尾匹配,用TEST替换最长的b*l echo ${str/%b*l/TEST} #aTEST
5.expr操作字符串
对于上面的一些操作,如果改用expr执行,那么就很简单了:str='2016-01-05' #求字符串长度 length=`expr length $str` echo $length #10
#截取字符串 substr=`expr substr $str 1 4` echo $substr #2016
#求字符串中元素的下标索引,如果元素不存在输出0(因为此时索引从1开始) index=`expr index $str "2"` echo $index #1
6.split字符串
一般截取字符串还可以用cut和awk,如:str='2016-01-05' echo $str | awk -F '-' '{print $1}' echo $str|awk '{print substr($str,1,4)}' echo $str | awk -F '-' '{for( i=1;i<=NF; i++ ) print $i}' #2016 #2016 #2016 #01 #05
但是,不建议采用这种方式,因为当文件很大,有很多行,上述方式需要开辟管道,会启动新进程,效率很低下。同时,如果要把awk结果存在数组时,就还需要一个for循环才行。
因此,建议采用下面这种方式:
arr=(${str//-/ }) echo ${arr[1]} #01
把split结果存到数组中后,剩下的就是对数组的操作,如果对Shell数组不熟,那么可以参考Shell数组
Shell字符串操作、Shell数组熟悉之后就可以用Shell进行小文件处理。
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- 数据库链接字符串查询网站
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- DVI 视频接口图文解析
- IE6不能正常解析CSS文件问题的解决方法及原因分析
- Flex字符串比较 还有Flex字符串操作
- shell字符串操作详解
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- C#自写的一个HTML解析类(类似XElement语法)
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- Shell中删除某些文件外所有文件的3个方法
- 字符串聚合函数(去除重复值)