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