字符串操作

注意不同的字符串索引系统:
Bash的第一个字符是从'0'开始记录的.
Awk的第一个字符是从'1'开始记录的.

${#variable} 字符串长度

stringZ=abcABC123ABCabc
 echo ${#stringZ}                 # 15
 echo `expr length $stringZ`      # 15

${string:position} ${string:position:length}

# 提取子字符串
stringZ=abcABC123ABCabc
echo ${stringZ:0}                            # abcABC123ABCabc
echo ${stringZ:1}                            # bcABC123ABCabc


# 能不能从字符串的右边(也就是结尾)部分开始提取子串? 
echo ${stringZ:-4}                           # abcABC123ABCabc
# 默认是提取整个字符串, 就象${parameter:-default}一样.

 echo ${stringZ:(-4)}                         # Cabc ,使用  "()"  转义
 echo ${stringZ: -4}                         # Cabc ,:后面有一个空格
# 使用圆括号或者添加一个空格可以"转义"这个位置参数.

#如果$string参数是"*"或"@", 那么将会从$position位置开始提取$length个位置参数, 但是由于可能没有$length个位置参数了, 那么就有几个位置参数就提取几个位置参数.

echo ${*:2}          # 打印出第2个和后边所有的位置参数
echo ${@:2}          # 同上.
echo ${*:2:3}        # 从第2个开始, 连续打印3个位置参数

expr substr $string $position $length

# 在$string中从$position开始提取$length长度的子串
# 位置参数从0开始计数

stringZ=abcABC123ABCabc
echo `expr substr $stringZ 1 2`              # ab
echo `expr substr $stringZ 4 3`              # ABC

从开头删除最短子串 ${string#substring}

stringZ=abcABC123ABCabc
echo ${stringZ#a*C}      # 123ABCabc

从开头删除最长子串 ${string##substring}

stringZ=abcABC123ABCabc
echo ${stringZ##a*C}     # abc
# 截掉'a'到'C'之间最长的匹配字符串.

删除从结尾匹配的最短子串 ${string%substring}

stringZ=abcABC123ABCabc
echo ${stringZ%b*c}      # abcABC123ABCa

删除从结尾匹配的最长子串 ${string%%substring}

stringZ=abcABC123ABCabc
echo ${stringZ%%b*c}     # a

子串替换 ${string/substring/replacement}

# 使用$replacement来替换第一个匹配的$substring.
stringZ=abcABC123ABCabc
# 使用'xyz'来替换第一个匹配的'abc'
echo ${stringZ/abc/xyz}           # xyzABC123ABCabc



# 如果$substring匹配$string的开头部分, 那么就用$replacement来替换$substring
# ${string/#substring/replacement}
stringZ=abcABC123ABCabc
# 用'XYZ'替换开头的'abc'
echo ${stringZ/#abc/XYZ}          # XYZABC123ABCabc


# 如果$substring匹配$string的结尾部分, 那么就用$replacement来替换$substring
# ${string/%substring/replacement}
stringZ=abcABC123ABCabc
# 用'XYZ'替换结尾的'abc'
echo ${stringZ/%abc/XYZ}          # abcABC123ABCXYZ

全部子串替换 ${string//substring/replacement}

# 使用$replacement来替换所有匹配的$substring
stringZ=abcABC123ABCabc
 # 用'xyz'来替换所有匹配的'abc'.
echo ${stringZ//abc/xyz}          # xyzABC123ABCxyz

唯爱与技术不可辜负

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容