2013-07-17 78 views
4

后猛砸的indexOf子有没有办法让Bash的第n个字符之后的子字符串的indexOf,而无需逐个切原字符串,那将是漫长的第n个字符

   123456789
$ expr index 'abcdeabcdabcaa' 'c' 
3 
$ expr index 'abcdeabcdabcaa' 'ca' 
1 

我想要什么将是:

$ indexOf 'abcdeabcdabcaa' 'ca' 
12 
$ indexOfAfter 5 'abcdeabcdabcaa' 'c' 
8 
$ indexOfAfter 5 'abcdeabcdabcaa' 'ca' 
12 
$ indexOfAfter 9 'abcdeabcdabcaa' 'b' 
11 
$ indexOfAfter 111 'abcdeabcdabcaa' 'c' 
0 

可能已经有上发挥作用猛砸做到这一点..这是不是一个功课,只是出于好奇..

+0

的可能重复的[击:查找下OS X的字符串的字符的位置(http://stackoverflow.com/questions/17615750/bash-找到字符在字符串中的位置 - os-x) – chepner

回答

4

与实现这两种操作文件的indexOf的项

内容:

echo "$1" "$2" | awk '{print index($1,$2)}' 

例如文件indexOfAfter的

indexOf 'abcdeabcdabcaa' 'ca' 
12 

内容:

echo "$1" "$2" "$3" | \ 
awk '{s=substr($2,$1);posn=index(s,$3);if (posn>0) print $1+posn-1; else print 0;}' 
+0

ahh awk!这就是我需要..:3谢谢 – Kokizzu