一、截取
语法格式 | 说明 |
${string: start :length} | 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。 |
${string: start} | 从 string 字符串的左边第 start 个字符开始截取,直到最后。 |
${string: 0-start :length} | 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。 |
${string: 0-start} | 从 string 字符串的右边第 start 个字符开始截取,直到最后。 |
${string#*substr} |
从 string 字符串第一次出现 *substr 的位置开始,截取 *substr 右边的所有字符。 |
${string##*substr} | 从 string 字符串最后一次出现 *substr 的位置开始,截取 *substr 右边的所有字符。 |
${string%*substr} | 从 string 字符串第一次出现 *substr 的位置开始,截取 *substr 左边的所有字符。 |
${string%%*substr} | 从 string 字符串最后一次出现 *substr 的位置开始,截取 *substr 左边的所有字符。 |
二、替换
语法格式 | 说明 |
${string/substring/replacement} | 使用$replacement, 来代替第一个匹配的$substring |
${string//substring/replacement} | 使用$replacement, 代替所有匹配的$substring |
${string/#substring/replacement} | 如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring |
${string/%substring/replacement} | 如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring |
三、字符串数组
Shell 数组用括号来表示,元素用"空格"符号分割开;
3.1 使用空格生成数组
将字符串列表转变为数组,只需要在前面加(),例如:arr=(string) echo ${arr[@]}
3.2 使用其他字符,把字符串分割成数组
如果需要按指定符号分割成数组,那么需要把指定符号替换成空格
1)这个想法是使用字符串替换:
string="1:2:3:4:5" set -f # avoid globbing (expansion of *). array=(${string//:/ }) for i in "${!array[@]}" do echo "$i=>${array[i]}" done
将$ substring的所有匹配项替换为空格,然后使用替换的字符串初始化数组:
2 使用 tr 配合
t="one,two,three" a=($(echo "$t" | tr ',' '\n')) echo "${a[2]}"
3.3 数组操作
1)分隔后的全部数组
${arr[@]}
2)分隔后的每一项
${arr[0]} ${arr[1]} ...
3)分割后的数组长度
${#arr[@]}
4)存储整个索引值
${!arr[@]}
标签:string,start,处理,substring,substr,字符串,Bash,replacement From: https://www.cnblogs.com/xuehuafeixuan/p/17663841.html