做菠菜网站代理犯法吗/湖南seo优化排名
1、获取字符串长度
string="abcd"echo ${#string} #输出 4
2、 查找子字符串
可以根据子字符串得到该子字符串第一个字母的索引下标,进而可以使用下标索引进行字符串的截取:
查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"echo `expr index "$string" io` # 输出 4
3、 截取子字符串的几种方式
(1)索引下标方式
最简单的例子:(起始下标为正,表示从左到右,为负则表示从右到左)
从左边第几个字符开始,及字符的个数:
string="runoob is a great site"echo ${string:1:4} # 输出 unoo
从左边第几个字符开始,一直到结束。
string="runoob is a great site"echo ${string:4} # 输出 ob is a great site
引申:如果需要截取的字符长度是动态的,但是整个字符串又遵循某种格式,此时经常需要求得分割字符串的索引下标;
如下面两条日志,我想要截取出ip,但显然两段ip的长度不一样,如何解决?
199.30.20.69 - - [30/May/2013:20:56:21 +0800] "GET /robots.txt HTTP/1.1" 200 582
123.151.148.189 - - [30/May/2013:20:56:19 +0800] "GET /forum.php?mod=viewthread&tid=30468 HTTP/1.1" 200 57740
解决方法:
假设 str=199.30.20.69 - - [30/May/2013:20:56:21 +0800] “GET /robots.txt HTTP/1.1” 200 582
index_1=`expr index "$str" ' - - '`str_ip=${str:0:$index_1} # 输出 199.30.20.69
(2)# 号 或 %号方式
假设有变量
var=http://www.aaa.com/123.htm.
1)# 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://
结果是 :www.aaa.com/123.htm
2) ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.aaa.com/
结果是 123.htm
3) %号截取,删除右边字符,保留左边字符
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
结果是:http://www.aaa.com
4)%% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http: