一、shell字符串
字符串(String)就是一系列字符的组合。字符串是 Shell 编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)。字符串可以由单引号' '包围,也可以由双引号" "包围,也可以不用引号。
实际shell对字符串进行处理过程中,会有很多实际的用法,可以对字符串进行加工处理,取得想要的数据或字符,常见的字符串处理,包含以下几种场景:
获取字符串长度
字符串切片
替换字符串
字符串截取
字符串颜色
二、shell字符串处理实例
1、获取字符串长度
# VAR='hello world!'
# echo $VAR
hello world!
# echo ${#VAR}
12
2、字符串切片
格式:
${parameter:offset}
${parameter:offset:length}
截取从 offset 个字符开始,向后 length 个字符。
截取 hello 字符串:
# VAR='hello world!'
# echo ${VAR:0:5}
hello
截取 wo 字符:
# echo ${VAR:6:2}
wo
截取 world!字符串:
# echo ${VAR:5}
world!
截取最后一个字符:
# echo ${VAR:(-1)}
!
截取最后二个字符:
# echo ${VAR:(-2)}
d!
截取从倒数第 3 个字符后的 2 个字符:
# echo ${VAR:(-3):2}
ld
3、替换字符串
格式:${parameter/pattern/string}
# VAR='hello world world!'
将第一个 world 字符串替换为 WORLD:
# echo ${VAR/world/WORLD}
hello WORLD world!
将全部 world 字符串替换为 WORLD:
# echo ${VAR//world/WORLD}
hello WORLD WORLD!
替换正则匹配为空:
# VAR=123abc
# echo ${VAR//[^0-9]/}
123
# echo ${VAR//[0-9]/}
abc
注:patterm 前面开头一个正斜杠为只匹配第一个字符串,两个正斜杠为匹配所有字符。
4、字符串截取
格式:
${parameter#word} # 删除匹配前缀 去掉左边,最短匹配模式,
${parameter##word} ##最长匹配模式。
${parameter%word} # 删除匹配后缀
${parameter%%word}% 去掉右边,最短匹配模式,%%最长匹配模式。
# URL="http://www.baidu.com/baike/user.html"
以//为分隔符截取右边字符串:
# echo ${URL#*//}
www.baidu.com/baike/user.html
以/为分隔符截取右边字符串:
# echo ${URL##*/}
user.html
以//为分隔符截取左边字符串:
# echo ${URL%%//*}
http:
以/为分隔符截取左边字符串:
# echo ${URL%/*}
http://www.baidu.com/baike
5、字符串颜色
有时候关键地方需要醒目,可将字符串输出颜色。
格式:
\033[1;31;40m # 1 是显示方式,可选。31 是字体颜色。40m 是字体背景颜色。
\033[0m # 恢复终端默认颜色,即取消颜色设置。
示例:
# 字体颜色
for i in {31..37}; do
echo -e "\033[$i;40mHello world!\033[0m"
done
# 背景颜色
for i in {41..47}; do
echo -e "\033[47;${i}mHello world!\033[0m"
done
# 显示方式
for i in {1..8}; do
echo -e "\033[$i;31;40mHello world!\033[0m"
done