次の疑似コードと同等の機能をbashで実行したいと思います(aとbの両方がスクリプトへの入力です):
String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'
シェルスクリプトでこれを行うにはどうすればよいですか?
試す:
$ a="some long string"
$ b="ri"
$ echo ${a/*$b/$b}
ring
$ echo ${a/$b*/$b}
some long stri
できるよ:
$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
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"
これを試して:
a="some long string"
b="ri"
echo ${b}${a#*${b}}