第n个字符后的子串的Bash索引

时间:2013-07-17 08:34:32

标签: string bash

有没有办法在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上已经有功能这样做了..这不是一个功课,只是出于好奇..

1 个答案:

答案 0 :(得分:4)

使用awk

实施这两项操作

文件indexOf:

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

e.g。

 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;}'