有没有办法在 Bash 中获取第 n 个字符之后的子字符串的 indexOf,而不需要一个一个地剪切原始字符串,那会很长
12345678901234
$ expr index 'abcdeabcdabcaa' 'c'
3
$ expr index 'abcdeabcdabcaa' 'ca'
1
Run Code Online (Sandbox Code Playgroud)
我想要的是:
$ indexOf 'abcdeabcdabcaa' 'ca'
12
$ indexOfAfter 5 'abcdeabcdabcaa' 'c'
8
$ indexOfAfter 5 'abcdeabcdabcaa' 'ca'
12
$ indexOfAfter 9 'abcdeabcdabcaa' 'b'
11
$ indexOfAfter 111 'abcdeabcdabcaa' 'c'
0
Run Code Online (Sandbox Code Playgroud)
Bash 上可能已经有功能可以做到这一点.. 这不是作业,只是出于好奇..
两个操作都用 awk
文件 indexOf 的内容:
echo "$1" "$2" | awk '{print index($1,$2)}'
Run Code Online (Sandbox Code Playgroud)
例如
indexOf 'abcdeabcdabcaa' 'ca'
12
Run Code Online (Sandbox Code Playgroud)
文件 indexOfAfter 的内容:
echo "$1" "$2" "$3" | \
awk '{s=substr($2,$1);posn=index(s,$3);if (posn>0) print $1+posn-1; else print 0;}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5777 次 |
| 最近记录: |