【问题标题】:Having issues translating a regex behavior from python to AWK在将正则表达式行为从 python 转换为 AWK 时遇到问题
【发布时间】:2019-08-03 04:43:00
【问题描述】:

我正在尝试执行以下操作(用 python 编写),但在 awk 上但无法正常工作

new_row=re.sub(r'(.)\1{5,}', r'\1', row)

基本上,我希望能够将重复连续字符(5 个或更多)的实例替换为一个。我需要能够设置单个字符的多少个实例触发正则表达式,但我在弄清楚如何在 awk 中完成它时遇到了问题。

【问题讨论】:

  • 在awk中,你使用gsub吗?它不支持替换反向引用。如果可用,请使用gensub
  • 我尝试使用 gensub,但无法正确转换为 gensub 语法
  • 所以,发布您尝试过的内容并告知。
  • 谢谢,我想出了如何用 perl 更快地做到这一点,但是谢谢
  • 请将该 Perl 代码添加到问题中。

标签: python regex awk


【解决方案1】:

最终不需要 awk 并使用 perl 完成。正则表达式几乎相同。我有一个名为 $tmp_field 的变量,其中包含我要编辑的当前字符串:

($tmp_field) =~ s/(.)\1{5,}/\1/g

就是这样,谢谢大家

【讨论】:

  • 你犯了一个常见的错误。替换反向引用是$1,而不是\1。 Perl 不是sed
猜你喜欢
  • 1970-01-01
  • 2021-05-07
  • 2014-11-08
  • 1970-01-01
  • 2017-12-25
  • 2012-01-12
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多