shell里 截取字符串

按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串

“*”只是一个通配符可以不要

例子:
$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

牛b例子:

#!/bin/bash
#截取字符串

#path=ss/usr/share/src/root/home/admin

path=ss/usr/share/src/root/home/admin/src/add

echo $path
echo ${path%src*} #从右向左截取第一个 src 后的字符串

echo ${path}
echo ${path%/*}
echo ${path%%/*}从右向左截取 最后一个 / 后的字符串

echo ${path#*/}从左向右截取第一个 / 后的字符串

echo ${path##*/}从左向右截取最后一个 / 后的字符串

echo ${path:3}
echo ${path:6:60}截取变量path从前三个字符串
echo ${#path}计算 path变量 一共有几个字符串
echo ${path/root/kyo}把path变量里的第一个root字符串,替换为 kyo字符串
echo ${path//s/m}把path变量里的所有的s字符,替换为 m 字符

echo ${path}















原文地址:https://www.cnblogs.com/liulaolaiu/p/11744766.html