Bash:在OS X下查找字符串中的字符位置

时间:2013-07-12 13:13:56

标签: macos bash indexing match

有没有办法在 Mac OS X 下的 Bash 中查找字符串中第一个字符的位置?

类似的东西:

stringZ=abcABC123ABCabc                      # 6
echo `expr index "$stringZ" C12`             # C position.

Advanced Bash-Scripting Guide

所述

一堆陷阱:

  1. 官方索引函数expr index $string $substring不是 存在于OS X(BSD)匹配
  2. 安装gnu match( gmatch )似乎不是 BSD系统领域的便携式解决方案
  3. 有什么想法吗?

2 个答案:

答案 0 :(得分:5)

这是一个可怕的黑客攻击,可能不适用于所有情况。

tmp=${stringZ%%C12*}     # Remove the search string and everything after it
echo $(( ${#tmp} + 1 )) # Add one to the length of the remaining prefix

答案 1 :(得分:2)

可能有点矫枉过正但是这个怎么样:

$ echo 'abcABC123ABCabc' | awk 'match($0,"C"){print RSTART}'
6