如何在awk中将驼峰式字符串拆分为数组?

Rav*_*ven 2 arrays awk split camelcasing

如何使用 split 函数将驼峰式字符串拆分为 awk 中的数组?

输入:

STRING="camelCasedExample"
Run Code Online (Sandbox Code Playgroud)

期望的结果:

WORDS[1]="camel"
WORDS[2]="Cased"
WORDS[3]="Example"
Run Code Online (Sandbox Code Playgroud)

糟糕的尝试:

split(STRING, WORDS, /([a-z])([A-Z])/);
Run Code Online (Sandbox Code Playgroud)

不好的结果:

WORDS[1]="came"
WORDS[2]="ase"
WORDS[3]="xample"
Run Code Online (Sandbox Code Playgroud)

Ed *_*ton 5

你不能split()单独做到这一点,这就是为什么 GNU awk 具有patsplit()

$ awk 'BEGIN {
    patsplit("camelCasedExample",words,/(^|[[:upper:]])[[:lower:]]+/)
    for ( i in words ) print words[i]
}'
camel
Cased
Example
Run Code Online (Sandbox Code Playgroud)

  • 这就是我一直在寻找的!我不知道 patsplit 命令,并且我的旧开发服务器上的 gawk 3.1.8 不支持它,但我能够在具有 gawk 4.2.1 的新服务器上使用它。 (2认同)