web-dev-qa-db-fra.com

Shell Script Substring de la première index de la sous-chaîne

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?

16
pathikrit

Tu peux faire:

$ a="some long string"
$ b="ri"
$ echo $a | grep -o "$b.*"
ring
15
codaddict

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"

3
lessyv

Essaye ça:

a="some long string"
b="ri"

echo  ${b}${a#*${b}}
3
Fritz G. Mehner