【发布时间】:2021-03-23 23:49:17
【问题描述】:
我正在尝试拆分字母和数字边界,但使用环视的解决方案失败了:
echo 50cats30dogs100squirrels | awk '{split($0,a,/(?<=\D)(.*)(?=\d)/); print a[1],a[2],a[3]}'
awk: illegal primary in regular expression (?<=\D)(.*)(?=\d) at <=\D)(.*)(?=\d)
source line number 1
context is
>>> {split($0,a,/(?<=\D)(.*)(?=\d)/) <<<
有没有办法在 Awk 中以其他方式做到这一点?
编辑:
抱歉,不清楚。预期的输出是像这样添加空格:
50 cats 30 dogs 100 squirrels
【问题讨论】:
-
你可以看看this question。总而言之,awk 没有后视正则表达式。
-
awk不支持环顾四周,如果您可以在您的问题中发布您的示例输入和示例输出,那么我们可以获得更清晰的图片,并可以在这里提供帮助,谢谢你。 -
数组
a之后应该包含什么?我不知道你想要数字还是单词。 -
关于您的编辑:什么?
50cats30dogs100squirrels->50 cats 30 dogs 100 squirrels实际上是2S5M1I^ATAG1I3M1D5M->SSMMMMMI^^^^IMMMDMMMMM? -
我认为这是一个解决更复杂问题的玩具示例(或前进的一步)。将发布一个新问题。
标签: awk