【问题标题】:Bash indexof substring after nth character第 n 个字符后的 Bash indexof 子字符串
【发布时间】:2013-07-17 08:34:32
【问题描述】:

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

【问题讨论】:

标签: string bash


【解决方案1】:

这两个操作都是用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;}'

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多