输入字符串示例 - #J219568abpwrk1
我想从上面提取字符串“abpwrk1”。
该字符串始终以 #J 开头,后跟 5 或 6 位数字。它表示职位编号。 接下来是我要提取的用户名。 用户名可以是字母数字,但可以假设它始终以字母开头。
尝试过以下: a="#J219568abpwrk1"; a="${a#*[a-z]}";回显$a; 输出:bpwrk1
我需要完整的用户名。 任何专家都可以在 bash 中帮忙解决这个问题吗?
字符串始终以
开头,后跟 5 或 6 位数字。#J
如果是硬编码数据结构,值的长度固定,您可以查看数组的切片表示法。
一个最小的例子
#!/bin/bash
INPUT="#J123456abcdef0"
echo "${INPUT:8:7}"
将产生
的输出abcdef0
类似问答
如果值的长度是动态的,您可以查看以下最小示例。
#!/bin/bash
INPUT="#J123456abcdef0"
echo ${INPUT} | grep -o '[a-z]*.$'
输出
abcdef0
因为它捕获从输入字符串的第一个较低字符开始一直到结尾的所有较低字符。