【问题标题】:\K trick for regular expression in AWK [duplicate]AWK中正则表达式的\K技巧[重复]
【发布时间】:2014-01-07 16:06:05
【问题描述】:

是否可以在 AWK 中执行 \K 技巧?

例子:

awk '{match($0,/Food:\K\w+/)}{print substr($0,RSTART,RLENGTH),$1,$2 }'

我希望它匹配那个东西,Food: 之前的后面字母数字部分

我试过了,但没用,我用 grep 和 perl 使用了这种表达式

我有:

食物:23545234
美食:32453245
美食:34653434

我只想保留这个号码。

你知道我该怎么做吗?

【问题讨论】:

  • \K 仅适用于 PCRE,您想在这里做什么?
  • 如果您想要在Food: 之后的匹配位置开始打印,那么我认为您将不得不手动执行此操作。
  • \K 在这里也可以解决问题,您的 awk 行匹配 'Food:Ketchup'
  • 我有喜欢的食物:234624
  • 您对此的预期匹配和预期输出是什么?

标签: regex awk


【解决方案1】:

你必须用类似的东西来解决它

print(gensub(/.*Food:([^\f\t ]+)/,"\\1"))

另见http://awk.freeshell.org/Backreferences

【讨论】:

  • 这是一个“反向引用”;它指回第一个匹配的括号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 2010-09-21
相关资源
最近更新 更多