shell编程,字符串切片分割工具${},cut
${string: start :length} | 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。 |
${string: start} | 从 string 字符串的左边第 start 个字符开始截取,直到最后。 |
${string: 0-start :length} | 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。 |
${string: 0-start} | 从 string 字符串的右边第 start 个字符开始截取,直到最后。 |
${string#*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
${string##*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。 |
${string%*chars} | 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
${string%%*chars} | 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。 |
字符串分格:
${variable:offset:number} 将变量variable中从offset开始切割number个字符
例:从URL中截取文件名
export DOWNLOAD_URL="http://192.168.12.123/poc/analytics-build_3_1111.tar" echo ${DOWNLOAD_URL##*/}
方法一:
${变量:移位:个数}
例:
variable="hello_world" echo ${variable:0:5}
方法二:
${variable:##*string} 在variable中查找string,查找到后就删除string之前的字符,保留后面的;##表示查找多数,保留最后的。
例:
variable="---@--@---@---@--@--"
查找一次:
echo ${variable#*@}
查找多次:
echo ${variable##*@}
从右边删除:
${variable%string*} ${variable%%string*}
例:
url=http://www.scriptjc.com:80 echo ${url%%:*} # http echo ${url%:*} # http://www.scriptjc.com echo ${url#*:} # //www.scriptjc.com:80 echo ${url##*:} # 80
字符串替换:
${variable/pattern/string} 使用string替换pattern
${variable//pattern/string} 使用string替换pattern,两个斜杠表示替换多次
${variable/#pattern/string} 只替换以pattern开头的
${variable/pattern#/string} 只替换以pattern结尾的
${variable/pattern} 删除
${variable/pattern} 删除多次
${variable/#pattern} 删除行首匹配到的
${variable/%pattern} 删除行位匹配到的
例:
variable="---@--@---@---@--@--"
echo ${variable/@/+}
---+--@---@---@--@--
例:
echo ${variable//@/+}
---+--+---+---+--+--
转大写小写:
${variable^^} 将字符串转小写
${variable , , } 将字符串转小写
变量赋值:
${variable:-value} 如果variable为空,则返回value值
${variable:=value} 如果variable为空,则将value值赋给varibale变量
${variable:+value} 如果variable不为空,返回value值
${variable:?error} 如果variable为空,则返回错误信息
cut
cut -d ' ' -f 1,2
-d表示要分割的字符
-f 1,2表示要输出的字段,1-3表示1到3,1,3表示1和3
例:echo $( echo $var | cut -d ' ' -f 1 )