lincx Shell脚本编程之字符串的截取,替换,按条件掐头去尾
子串截取 三种方法
方法一:${变量名:起始位置:长度}
方法二:expr subsrt “$变量名” 起始位置 长度
方法三:echo $变量名 | cut -b 起始位置-结束位置
[[email protected] ~]# phone='13788768897'
[[email protected] ~]# echo ${#phone} 显示字符串的内字符的个数
11
[[email protected] ~]# echo ${phone:0:6} 截取字符串从0为开始从左到右的6为数字
137887
[[email protected] ~]# echo $phone | cut -b 1-4 截取字符串从1到4之间的字符串
1378
[[email protected] ~]# expr substr "$phone" 1 3 截取字符串从1到3之间的字符串
137
[[email protected] ~]# echo $phone | cut -b 1,4,8 截取字符串从1,4,8位置上的字符
188
语法格式:
${变量名/old/new} 只替换第一个匹配结果
${变量名/old/new} 替换全部匹配结果
举例:
[[email protected] ~]# phone='13788768897'
[r[email protected] ~]# echo ${phone/3/@}
[email protected]
[[email protected] ~]# echo ${phone//8/*}
137**76**97
按条件掐头去尾
掐头:
从左向右,最短匹配删除
${变量名#*关键词 }
从左向右,最长匹配删除
${变量名##*关键词 }
去尾:
从右向左,最短匹配删除
${变量名%关键词*}
从右向左,最长匹配删除
${变量名%%关键词*}
[[email protected] ~]# phone='13788768897'
[[email protected] ~]# echo ${phone#*8}
8768897
[[email protected] ~]# echo ${phone##*8}
97
[[email protected] ~]# echo ${phone%8*}
13788768
[[email protected] ~]# echo ${phone%%8*}
137