4

有没有一种方法可以在 Bash 中的第 n 个字符之后获取子字符串的 indexOf,而无需逐个剪切原始字符串,那会很长

              12345678901234
$ 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

可能Bash上已经有功能可以做到这一点..这不是功课,只是出于好奇..

4

1 回答 1

5

两种操作都使用awk

文件 indexOf 的内容:

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

例如

 indexOf 'abcdeabcdabcaa' 'ca'
 12

文件 indexOfAfter 的内容:

echo "$1" "$2" "$3" | \
awk '{s=substr($2,$1);posn=index(s,$3);if (posn>0) print $1+posn-1; else print 0;}'
于 2013-07-17T09:09:48.213 回答