【问题标题】:Shell script substring from first indexof substring来自第一个 indexof 子字符串的 Shell 脚本子字符串
【发布时间】:2012-05-08 02:40:28
【问题描述】:
我想在 bash 中完成以下伪代码的等效操作(a 和 b 都是我的脚本的输入):
String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'
如何在 shell 脚本中执行此操作?
【问题讨论】:
标签:
string
bash
shell
unix
scripting
【解决方案1】:
你可以这样做:
$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
【解决方案2】:
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】:
试试这个:
a="some long string"
b="ri"
echo ${b}${a#*${b}}
【解决方案4】:
试试:
$ a="some long string"
$ b="ri"
$ echo ${a/*$b/$b}
ring
$ echo ${a/$b*/$b}
some long stri