前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell字符串处理

Shell字符串处理

原创
作者头像
入门笔记
修改2021-01-04 10:29:35
1.4K0
修改2021-01-04 10:29:35
举报
文章被收录于专栏:入门小站入门小站

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

获取字符串长度

代码语言:txt
复制
> RUMENZ="入门小站"
> echo ${#RUMENZ}
4

字符串切片

${parameter:offset}

${parameter:offset:length}

截取从 offset 个字符开始,向后 length 个字符。

代码语言:txt
复制
> RUMENZ="入门小站"

截取前两个字符从0开始

代码语言:txt
复制
> echo ${RUMENZ:0:2} 
入门

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

代码语言:txt
复制
> echo ${RUMENZ:2}
小站
# 或者
> echo ${RUMENZ:(-2)}
小站

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

代码语言:txt
复制
# 从倒数第3个字符开始,截取2个字符
> echo ${RUMENZ:(-3):2}

字符还替换

格式:${parameter/pattern/string}

代码语言:txt
复制
> RUMENZ="hello world world"

替换第一个world

代码语言:txt
复制
> echo ${RUMENZ/world/WORLD}
hello WORLD world

替换所有的world

代码语言:txt
复制
> echo ${RUMENZ//world/WORLD}
hello WORLD WORLD

正则匹配替换

代码语言:txt
复制
> RUMENZ="abcd1234"
# 删除所有的字母
> echo ${RUMENZ//[0-9]}
abcd
# 删除所有的数字
> echo ${RUMENZ//[^0-9]}
1234

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

字符串截取

格式:

${parameter#word}

${parameter##word}

${parameter%word}

${parameter%%word}

# 去掉左边,最短匹配模式,##最长匹配模式。 % 去掉右边,最短匹配模式,%%最长匹配模式。

代码语言:txt
复制
RUMENZ="https://json.im/bigjson/index.html"

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

代码语言:txt
复制
> echo ${RUMENZ#*//}
json.im/bigjson/index.html

删除index.html前面所有字符

代码语言:txt
复制
> echo ${RUMENZ##*/}
index.html

删除index.html

代码语言:txt
复制
echo ${RUMENZ%/*}
https://json.im/bigjson

删除https:后面所有的字符

代码语言:txt
复制
> echo ${RUMENZ%%/*}
https:

变量状态赋值

${VAR:-string}

${VAR:+string}

${VAR:=string}

${VAR:?string}

如果 VAR 变量为空则返回 string,不改变原变量的值

如果 VAR 变量不为空则返回 string,不改变原变量的值

如果 VAR 变量为空则重新赋值 VAR 变量值为 string,改变原变量的值

如果 VAR 变量为空则将 string 输出到 stderr

代码语言:txt
复制
> 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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取字符串长度
  • 字符串切片
    • 截取前两个字符从0开始
      • 截取最后N个字符(N=2)
        • 从尾部第N个字符开始截取M长度的字符串
        • 字符还替换
          • 替换第一个world
            • 替换所有的world
              • 正则匹配替换
              • 字符串截取
                • 删除//前面的https://(包括//)
                  • 删除index.html前面所有字符
                    • 删除index.html
                      • 删除https:后面所有的字符
                      • 变量状态赋值
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                      http://www.vxiaotou.com