Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...

在 Linux 中,我们可以使用 expr 命令对字符串做一些处理。例如:

expr index STRING CHARS 获取指定字符在字符串中的位置

expr substr STRING POS LENGTH 从字符串中获取到子字符串

expr length STRING 获取字符串的长度

expr index STRING CHARS

查看 man expr 对 index STRING CHARS 表达式说明如下:

index STRING CHARS

index in STRING where any CHARS is found, or 0

即,expr index STRING CHARS 命令可以获取 CHARS 包含的任意字符在 STRING 字符串中第一次出现的位置。

位置偏移是从 1 开始数起,不是从 0 开始。

如果 CHARS 包含的所有字符都没有找到,返回为 0。

当 STRING 字符串的内容包含空格时,要用双引号括起来,否则会报错。

注意:expr index STRING CHARS 命令并不是查找 CHARS 子字符串在 STRING 字符串中的位置。

它只能查找单个字符在 STRING 字符串中的位置。

只是 CHARS 可以指定要查找哪几个字符,并以第一个查找到的字符为准。

具体举例说明如下:

$ value="This is a test string."

$ expr index $value a

expr: syntax error

$ expr index "$value" a

9

$ expr index "$value" p

0

$ expr index "$value" "test"

4

$ expr index "$value" "est"

4

可以看到,由于 value 变量值包含空格,当使用 $value、没有加双引号时,命令执行报错。

使用 "$value"、加了双引号后,没有报错。

expr index "$value" a 命令返回 a 字符在 value 变量值中的位置是 9,位置偏移从 1 开始。

由于 p 字符在 value 变量值中不存在,expr index "$value" p 返回为 0。

expr index "$value" "test" 命令并不是返回 "test" 子字符串在 value 变量值中的位置。

而是返回 t 、e 、s 这三个字符的任意一个在 value 变量值中第一次出现的位置。

那么第一次出现的字符是 s,位于开头的 "This" 子字符串,从 1 开始数起,是第 4 个字符,所以该命令返回为 4。

由于是查找多个字符中的任意一个字符,跟提供的字符先后顺序无关。

所以 expr index "$value" "est" 命令也是返回 4。

并不因为 "est" 参数的 e 字符在 s 字符前面就优先查找 e 字符。

expr substr STRING POS LENGTH

查看 man expr 对 substr STRING POS LENGTH 表达式说明如下:

substr STRING POS LENGTH

substring of STRING, POS counted from 1

即,expr substr STRING POS LENGTH 命令从 STRING 字符串的第 POS 个字符开始,一直获取 LENGTH 个字符,得到一个子字符串。

位置偏移从 1 开始,不是从 0 开始。

当 STRING 字符串的内容包含空格时,要用双引号括起来,否则会报错。

具体举例说明如下:

$ value="This is a test string."

$ expr substr "$value" 6 2

is

$ expr substr "$value" 11 4

test

可以看到,expr substr "$value" 6 2 命令从 value 变量值的第 6 个字符开始,获取包括该字符在内的两个字符,得到 "is" 子字符串。

expr substr "$value" 11 4 命令的执行结果类似。

expr length STRING

查看 man bash 对 length STRING 表达式说明如下:

length STRING

length of STRING

即,expr length STRING 获取 STRING 字符串的长度。长度从 1 开始。

当 STRING 字符串的内容包含空格时,要用双引号括起来,否则会报错。

具体举例说明如下:

$ value="come on"

$ expr length "$value"

7

$ expr length $value

expr: syntax error

可以看到,value 变量值带有空格。

当 $value 没有用双引号括起来时,expr length $value 命令执行报错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值