设变量str="https://en.wikipedia.org/wiki/Unix_shell"
截取操作符 # 删除左边字符串,保留右边字符串。
$ echo ${str#*//}
en.wikipedia.org/wiki/Unix_shell
$ echo ${str##*//}
en.wikipedia.org/wiki/Unix_shell
$ echo ${str#*/}*
/en.wikipedia.org/wiki/Unix_shell
$ echo ${str##*/}
Unix_shell
从上面的测试可以看出
${str#*/}
从左边开始删除到第一个"//"符号以及左边的所有字符串。
${str##*/}
从左边开始删除到最后一个"/"符号以及左边的所有字符串。
截取操作符% 删除右边的字符串,保留左边的字符串。
$ echo ${str%/*}
https://en.wikipedia.org/wiki
$ echo ${str%%/*}
https:
$ echo ${str%//*}
https:
$ echo ${str%%//*}5
https:
${str%/*}
从右边开始删除到第一个"/"符号以及右边的所有字符串。
${str%%/*}
从右边开始删除到最后一个"/"符号以及右边的所有字符串。
指定区间的截取${str:m:n}
- 从左边第m个字符(左边第一个下标为0)开始,到左边的第n个字符。
$ echo ${str:0:6}
https:
$ echo ${str:2:6}
tps://
${str:m}
- 从左边第m个字符开始,到最右边的所有字符串。
$ echo ${str:6}
//en.wikipedia.org/wiki/Unix_shell
${str:m-n:x}
- 从右边的第(n-m)个字符开始,到右边的x个字符串。
$echo ${str:1-6:5}
shell
${str:m-n}
- 从右边的第(n-m)个字符开始,直到右边结束。
echo ${str:1-6}
shell
如果设置m为0的话,就表示从右边第n个字符开始(右边的第一个字符表示为 0-1)。
设变量 str="hello"
如在字符串str
后边拼接一个字符串
$ echo ${str}" world"
hello world
如拼接2个字符串
$ str1="world"
$ echo ${str}${str1}
helloworld
关于shell字符串截取和拼接的简单操作大致如此。