字符串操作

Bash 所支持的字符串操作的方式多种多样,现记录如下。
1、获取字符串长度:
1)${#string} (“${#*}”和“${#@}”表示的是位置参数的个数。另外,对于数组 arr 而言,“${#arr}”表示的是数组中第一个元素的长度,“${#arr[@]}”和“${#arr[* ]}”表示的是数组中元素的个数)
2) expr length $string
3) expr "$string" : ".*" (注意:“:”两边有空格,下同)

2、字符串开头匹配所给正则表达式的子串的长度:
1)expr match "$string" "$substring" (注意:“substring”是一个正则表达式)
2)expr "$string" : "$substring" (注意:“substring”是一个正则表达式)

3、在字符串中找到的任一出现在所给的字符集合中的字符的位置(从 1 开始计数,没有则返回 0,有点类似于 C 语言中的 strchr 函数):
1)expr index "$string" "$chars"

4、提取子串:
1)${string:position} (从位置 position 处开始提取子串。如果 $string 是“*”或者“@”,那么将会提取从位置 position 开始的位置参数,下同)
2)${string:position:length} (从 position 处开始提取 length 长度的子串)
注意:这两种写法中下标是从 0 开始的,并且允许 position 为负数,表示从倒数第 $position 的绝对值处开始提取,不过此时 position 和“:”需要以空格隔开,或者将 position 用置于括弧中,如:${string: -4:3},或者:${string:(-4):3}。
3)expr substr $string $position $length (在 $string 中从 $position 处提取 $length 长度的子串,下标从 1 开始,下同)
4)expr match "$string" '\($substring\)' (从 $string 的开始位置提取 $substring,其中 $substring 是正则表达式,下同)
5)expr "$string" : '\($substring\)' (同上,注意“:”两边的空格)
6)expr match "$string" '.*\($substring\)' (从 $string 的结尾提取匹配正则表达式 $substring 的子串)
7)expr "$string" : '.*\($substring\)' (同上)

5、子串削除:
1)${string#substring} (从 $string 的开头截掉最短匹配的 $substring)
2)${string##substring} (从 $string 的开头截掉最长匹配的 $substring)
3)${string%substring} (从 $string 的结尾位置截掉最短匹配的 $substring)
4)${string%%substring} (从 $string 的结尾位置截掉最长匹配的 $substring)
注意:这里的 $substring 是 globbing 形式的匹配风格。

6、子串替换:
1)${string/substring/replacement} (使用 $replacement 来替换第一个匹配的 $substring)
2)${string//substring/replacement} (同上,不过是替换所有匹配的 $substring)
3)${string/#substring/replacement} (若 $substring 匹配 $string 的开头部分,就用 $replacement 替换 $substring,这里的 substring 是 globbing 风格的最长匹配)
4)${string/%substring/replacement} (同上,不过是匹配 $string 的结尾部分)

7、变量检测:
1)${parameter}/$parameter (获取变量 parameter 的值)
2)${parameter-default} (如果变量 parameter 没被声明,就使用默认值 $default)
3)${parameter:-default} (如果变量parameter没被声明或值为 null,就使用默认值)
4)${parameter=default} (如果变量 parameter 没被声明,就使用默认值 $default,同时设置 parameter 的值为 default)
5)${parameter:=default} (如果变量parameter没被声明或值为 null,就使用默认值,同时设置 parameter 的值为 default)
6)${parameter+alt_value} (如果设置了变量 parameter,就使用 alt_value,否则为 null)
7)${parameter:+alt_value} (如果设置了变量 parameter 且为非 null 值,则使用 alt_value,否则为 null)
8)${parameter?err_msg} (如果已声明变量 parameter,则使用它的值,否则打印 err_msg 错误信息)
9)${parameter:?err_msg} (如果已声明变量 parameter 且它的值不为 null,则使用它的值,否则答应 err_msg 错误消息)

8、匹配变量名:
1)${!str*}/${!str@} (匹配所有之前声明过的以 str 开头的变量名)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值