Оболочка script подстроки из первого индекса подстроки

Я хочу выполнить эквивалент следующего псевдокода в bash (оба a и b являются входами в мой script):

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

Как это сделать в оболочке script?

Ответ 1

Вы можете сделать:

$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring

Ответ 2

Try:

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

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

    $ echo ${a/$b*/$b}
    some long stri

Ответ 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"

Ответ 4

Попробуйте следующее:

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

echo  ${b}${a#*${b}}