2013-07-17 117 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