Bash Shell字符串操作
Bash字符串处理
var=“hello_world_icbc_cib”
- 获取长度
${#string}
echo ${#var}
- 字符串截取
${string:position}
${string:position:length}
#
echo ${var:0:2}
#
echo ${var:2}
#
echo ${var:0-4:3}
#
echo ${var:0-4}
- 最短字串匹配
${string#substring},从左到右,删除匹配子串substring的最短字符,保留右侧字符。
${string%substring},从右到左,删除匹配字串substring的最短字符,保留左侧字符
#
echo ${var#*_}
#
echo ${var%_*}
- 最长字串匹配
${string##substring},从左到右,删除匹配子串substring的最长字符,保留右侧字符。
${string%%substring},从右到左,删除匹配字串substring的最长字符,保留左侧字符
#
echo ${var##*_}
#
echo ${var%%_*}
- 字符替换
${string/pattern/replacement},只替换第一个匹配的字符
${string//pattern/replacement},替换所有匹配字符
#
echo ${var/ic*_/ccb_}
#
echo ${var/i/I}
#
echo ${var//i/I}
- 替换开始和结束
${string/#pattern/replacement},只有当字串string以pattern开头,才执行对应替换。
${string/%pattern/replacement},只有当字串string以pattern结尾,才执行对应替换。
filename="/home/test/str.sh"
echo "replace at the beginning: "${filename/#\/home/\/begin}
echo "replace at the ending: "${filename/%.*/.txt}
代码段
#!/bin/bash
var="hello_world_icbc_cib"
#
echo ${#var}
#
echo ${var#*_}
#
echo ${var##*_}
#
echo ${var%_*}
#
echo ${var%%_*}
#
echo ${var:0:2}
#
echo ${var:2}
#
echo ${var:0-4:3}
#
echo ${var:0-4}
#
echo ${var/ic*_/ccb_}
#
echo ${var/i/I}
#
echo ${var//i/I}
#
filename="/home/test/str.sh"
echo "replace at the beginning: "${filename/#\/home/\/begin}
echo "replace at the ending: "${filename/%.*/.txt}
echo "bye..."
执行结果
https://www.thegeekstuff.com/2010/07/bash-string-manipulation/