20

次の疑似コードと同等の機能をbashで実行したいと思います(aとbの両方がスクリプトへの入力です):

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

シェルスクリプトでこれを行うにはどうすればよいですか?

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

grepsedなどを使用できますが、純粋な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 に答える