string 截取字符串_Shell字符串处理

${}可以引用变量,${}还有一个重要的功能就是字符串处理

获取字符串长度

> RUMENZ="入门小站"
> echo ${#RUMENZ}
4

字符串切片

${parameter:offset}${parameter:offset:length}截取从 offset 个字符开始,向后 length 个字符。

> RUMENZ="入门小站"

截取前两个字符从0开始

> echo ${RUMENZ:0:2} 
入门

截取最后N个字符(N=2)

> echo ${RUMENZ:2}
小站
# 或者
> echo ${RUMENZ:(-2)}
小站

从尾部第N个字符开始截取M长度的字符串

# 从倒数第3个字符开始,截取2个字符
> echo ${RUMENZ:(-3):2}

字符还替换

格式:${parameter/pattern/string}

> RUMENZ="hello world world"

替换第一个world

> echo ${RUMENZ/world/WORLD}
hello WORLD world

替换所有的world

> echo ${RUMENZ//world/WORLD}
hello WORLD WORLD

正则匹配替换

> RUMENZ="abcd1234"
# 删除所有的字母
> echo ${RUMENZ//[0-9]}
abcd
# 删除所有的数字
> echo ${RUMENZ//[^0-9]}
1234

patterm 前面开头一个正斜杠为只匹配第一个字符串,两个正斜杠为匹配所有字符。

字符串截取

格式:${parameter#word}${parameter##word}${parameter%word}${parameter%%word}# 去掉左边,最短匹配模式,##最长匹配模式。% 去掉右边,最短匹配模式,%%最长匹配模式。

RUMENZ="https://json.im/bigjson/index.html"

删除//前面的https://(包括//)

> echo ${RUMENZ#*//}
json.im/bigjson/index.html

删除index.html前面所有字符

> echo ${RUMENZ##*/}
index.html

删除index.html

echo ${RUMENZ%/*}
https://json.im/bigjson

删除https:后面所有的字符

> echo ${RUMENZ%%/*}
https:

变量状态赋值

${VAR:-string}${VAR:+string}${VAR:=string}${VAR:?string}如果 VAR 变量为空则返回 string,不改变原变量的值 如果 VAR 变量不为空则返回 string,不改变原变量的值 如果 VAR 变量为空则重新赋值 VAR 变量值为 string,改变原变量的值 如果 VAR 变量为空则将 string 输出到 stderr

> RUMENZ=""
> echo ${RUMENZ:-"入门小站"}
入门小站
> echo ${RUMENZ}

> RUMENZ="入门小站"
> echo ${RUMENZ:+"123"}
123
> echo $RUMENZ
入门小站

> RUMENZ=""
> echo ${RUMENZ:="入门小站"}
入门小站
echo ${RUMENZ}
> 入门小站

# 如果变量为空就将信息输出 stderr:
> RUMENZ=""
> echo ${RUMENZ:?null}
bash: RUMENZ: null

b08797fc4cae6f098cf546a2e33b6a65.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值