Je souhaite accomplir l'équivalent du pseudo-code suivant à BASH (A et B sont des entrées sur mon script):
String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'
Comment puis-je faire cela dans le script shell?
Tu peux faire:
$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
grep
, sed
et ainsi de suite peut être utilisé mais ce n'est pas pure-bash.
expr
est un bon choix mais index
Le paramètre n'est pas, car il correspond à la chaîne entière, essayez avec a = "some wrong string"
Il correspond au premier r
.
Utilisez plutôt expr match
Avec son paramètre d'expression régulier:
a="some long string";
b="ri";
echo ${a:$(expr match "$a" ".*${b}") - $(expr length "$b")}
Cela fonctionne aussi avec a = "some wrong string"
Essaye ça:
a="some long string"
b="ri"
echo ${b}${a#*${b}}