我想在bash中完成以下伪代码的等价物(a和b都是我脚本的输入):
String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'
我怎样才能在shell脚本中执行此操作?
答案 0 :(得分:14)
你可以这样做:
$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
答案 1 :(得分:11)
尝试:
$ a="some long string"
$ b="ri"
$ echo ${a/*$b/$b}
ring
$ echo ${a/$b*/$b}
some long stri
答案 2 :(得分: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"
答案 3 :(得分:3)
试试这个:
a="some long string"
b="ri"
echo ${b}${a#*${b}}