如何获取 bash 字符串的特定子集

How to get specific subset of bash string

对于 "c-zyte5:p-6db39" 这样的字符串,我如何解析它以获得特定的子集,例如 p-6db39 - 去掉前 9 个字符和最后一个字符?

你可以这样写:

foo='"c-zyte5:p-6db39"'
echo "${foo:9:-1}"            # prints p-6db39

(参见 the Bash Reference Manual, §3.5.3 "Shell Parameter Expansion"。)

除了子字符串索引之外,您还可以使用 参数扩展 和子字符串删除功能来删除从左至上第一个 ':' 的所有字符,例如

v="c-zyte5:p-6db39"
echo "${v##*:}"

结果

p-6db39