首页 > 代码库 > shell 字符串操作
shell 字符串操作
一、环境
ubuntu14.04 x86_64
二、字符串操作
1.获得字符串长度
类似C语言中的strlen()
${#variable_name}
eg:
$name=zhangsan $echo ${#name} 8 $
2.字符串提取
类似java中的substring()
${variable_name:start_index:length} 从左到右,从第start_index(0)开始,length长的子串
${variable_name:0-start_pos:length} 从结尾倒起数第start_pos开始,length长的子串
eg:
$echo ${name:0:4} zhang $echo ${name:2} #从第二个位置开始,到结束 angsan $echo ${name:0-4:2} gs $echo ${name:0-4} #从倒数第4开始,到结束
3.字符串截取
从左到右删除
${variable_name#*separator} separator是你要分隔的字符,到第一个separator的位置
类似C语言中的strchr()
eg:
$name=zhangsan-lisi-wangwu-baidi $echo ${name#*-} lisi-wangwu-baidi $
${variable_name##*separator} 到最后一个separator的位置
类似C语言中的rindex()
eg:
$echo ${name##*-} baidi $
从右到左删除
${variable_name%separator*}
${variable_name%%separator*}
eg:
$echo ${name%-*} zhangsan-lisi-wangwu $echo ${name%%-*} zhangsan $
4.字符串拆分
类似C语言的strtok()
${variable_name//ch/ch_replace} 将variable_name中的字符ch替换为ch_replace字符
eg:
$name=zhangsan-lisi-wangwu-baidi $name=${name//-/,} #将横杠替换为逗号 $echo ${name} zhangsan,lisi,wangwu,baidi $name={name//,/ } #将逗号替换为空格 $echo ${name} zhangsan lisi wangwu baidi #可用于后续的for循环 $
IFS 通过设置IFS的值,进行拆分
eg:
$test=aaa,bbb,ccc,ddd,eee $arr=${test} $echo ${arr} aaa,bbb,ccc,ddd,eee $OLD_IFS=$IFS $IFS=, $arr2=${test} $echo ${arr2} aaa bbb ccc ddd eee $IFS=${OLD_IFS}
本文出自 “风雪舞者” 博客,请务必保留此出处http://happytree007.blog.51cto.com/6335296/1904950
shell 字符串操作