【发布时间】:2016-01-26 21:30:29
【问题描述】:
假设我有以下字符串:x="number 1;number 2;number 3"。
通过${x%%";"*}访问first子字符串成功,通过${x##*";"}访问last子字符串:
$ x="number 1;number 2;number 3"
$ echo "front : ${x%%";"*}" #front-most-part
number 1
$ echo "back : ${x##*";"}" #back-most-part
number 3
$
如何访问中间部分:(例如number 2)?
如果我有(很多......)更多部分而不是三个部分,是否有更好的方法来做到这一点?
换句话说:是否有访问子字符串编号的通用方法。n 字符串 yyy,由字符串 xxx 分隔,其中 xxx 是任意字符串/分隔符?
我已经阅读了How do I split a string on a delimiter in Bash?,但我特别不想遍历字符串,而是直接访问给定的子字符串。
这个具体不问也不拆分成数组,而是拆分成子字符串。
【问题讨论】:
-
试试这个
cut -d';' -f2 <<< $x -
@Kalanidhi 那 only 访问第二个子字符串,最后我想对所有子字符串进行分隔访问(这实际上发生在循环和对任何子字符串是必需的)。
-
@dev-null 不,我要求拆分为字符串,而不是数组(这实际上发生在多维数组的循环中,所以我不想要数组的子数组)。