2012-04-27 5 views

ответ

8

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

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

не индекс но сама строка и ошибка всплывающих окон, если не найдете –

3

grep, sed и так далее могут быть использованы, но это не чисто-баш.

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"

3

Попробуйте это:

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

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

Try:

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

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

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

Умный. Тем не менее, вы должны дважды указывать аргумент на 'echo'. – tripleee

Смежные вопросы