20

我想在 bash 中完成以下伪代码的等效项(a 和 b 都是我的脚本的输入):

String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'

如何在 shell 脚本中执行此操作?

4

4 回答 4

20

尝试:

    $ a="some long string"
    $ b="ri"

    $ echo ${a/*$b/$b}
    ring

    $ echo ${a/$b*/$b}
    some long stri
于 2013-06-10T13:14:35.743 回答
17

你可以做:

$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
于 2012-04-27T10:39:46.353 回答
3

grep,sed等等都可以使用,但它不是纯 bash。

expr是一个不错的选择,但index参数不是,因为它匹配字符而不是整个字符串,尝试a = "some wrong string"匹配第一个r

而是使用expr match其正则表达式参数:

a="some long string";
b="ri";
echo ${a:$(expr match "$a" ".*${b}") - $(expr length "$b")}

它也适用于a = "some wrong string"

于 2012-04-27T11:04:09.567 回答
3

尝试这个:

a="some long string"
b="ri"

echo  ${b}${a#*${b}}
于 2012-04-27T12:22:11.300 回答