4

我知道,有一种方法可以获取字符串变量的子字符串:

MY_STR=abacaba
echo ${MY_STR:2:6}

有没有办法获取作为文字常量给出的字符串的子字符串?就像是:

echo ${"abacaba":2:6}
4

4 回答 4

3

您可以使用cut

$ echo abacaba | cut -c3-7
acaba

-c3-7会得到字符 3 到 7(注意第一个字符用 表示1)。

要获取从第 3 个开始的所有字符,您可以说:

$ echo abacaba | cut -c3-
acaba

您还可以使用tail

$ echo abacaba | tail -c+3
acaba
于 2013-09-18T06:07:54.563 回答
1

如果你不介意使用 cut 你可以这样做:

回声“蕉麻” | 切-c3-7

于 2013-09-18T06:08:02.967 回答
1

没有,但您可以有其他选择,例如使用函数:

function getsub {
    sub="${1:$2:$3}"
}

getsub abacaba 2 6
echo "$sub"

function printsub {
    echo "${1:$2:$3}"
}

printsub abacaba 2 6
于 2013-09-18T06:20:00.960 回答
1

expr可以处理字符串文字。

expr substr STR POS LEN
  • STR:常量字符串。
  • POS:子串第一个字符的索引(从1开始)。
  • LEN:子串的长度。

所以在你的例子中,它应该是expr substr 'abacaba' 3 6

于 2015-07-19T16:34:31.847 回答