Bash Shell脚本字符串截断

发布时间:2016-12-6 13:57:47 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Bash Shell脚本字符串截断",主要涉及到Bash Shell脚本字符串截断方面的内容,对于Bash Shell脚本字符串截断感兴趣的同学可以参考一下。

1.字符截断: 如果是一般路径的字符截断可以用basename和dirname这两个工具: basename可以从一个文件路径中截一个文件名 例如: $ basename /home/file.tar file.tar dirname可以从一个文件路径中截到一个目录路径 例如: $ dirname /home/file.tar /home 不使用外部工具进行字符截断 bash有自带的功能来对变量进行字符截断,一般使用"##", "#", "%%", "%", "*" 组合来实现。例如: $ string=hellowbashshell $ echo ${string##*sh} ell $ echo ${string#*sh} shell $ echo ${string%%sh*} hellowba $ echo ${string%sh*} hellowbash "#"表示从字符开始部分除去,一旦匹配则立即除去 "##"表示从字符开始部分除去,会搜整个字符串最长的和的匹配来除去 "%"表示从字符结束的部分除去,一旦匹配成公则立即除去 "%%"表示从字符结束的部分开始除去,会搜寻整个字符穿中最长的匹配来除去 "*"统配符,一般与“##”或"#"联用时放在搜索字符串的左边,例如:${String#*sh}(在sh的左边),与"%%"或"%"联用时会放在匹配字符串的右边,例如:${String%%sh*} 常用技巧: 在路径中取文件名:${path##*/}(与basename相同功能) 在路径中取目录路径:${path%/*}(与dirname相同功能) 取文件的扩展名:${path##*.} 假设有变量 var=http://www.google.com/test.htm 一 # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.google.com/test.htm 二 ## 号截取,删除左边字符,保留右边字符。 echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符 即删除 http://www.google.com/          结果是 test.htm 三 %号截取,删除右边字符,保留左边字符 echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符 结果是:http://www.google.com 四 %% 号截取,删除右边字符,保留左边字符 echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符 结果是:http: 五 从左边第几个字符开始,及字符的个数 echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。 结果是:http: 六 从左边第几个字符开始,一直到结束。 echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。 结果是 :www.google.com/test.htm 七 从右边第几个字符开始,及字符的个数 echo ${var:0-7:3} 其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。 结果是:test 八 从右边第几个字符开始,一直到结束。 echo ${var:0-7} 表示从右边第七个字符开始,一直到结束。 结果是:test.htm 注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

上一篇:http://www.cnblogs.com/zhanghaiba/p/3548602.html
下一篇:JAVA之抽象类与接口的区别

相关文章

相关评论