【问题标题】:Printing All Regex Matches打印所有正则表达式匹配
【发布时间】:2014-04-03 04:01:58
【问题描述】:

我正在使用下面的 perl/sed 命令来捕获和打印正则表达式匹配项,不幸的是,它们都只打印一行中的第一个匹配项,而不是所有匹配项。如何修改其中一个或两个命令以打印所有匹配项?欢迎使用 Grep 和 Awk 替代命令。

perl -nle 'print "$1" if /.*([0|1]\.[0-9]{0,2}).*/'

sed -rne "s/.*([0|1]\.[0-9]{0,2})/\1/p"

【问题讨论】:

  • 你能展示你输入数据的样本吗?

标签: regex perl sed awk grep


【解决方案1】:

只需将while/g 修饰符一起用于正则表达式,而不是if。还需要摆脱您在正则表达式周围不必要地使用.*

perl -nle 'print $1 while /([0|1]\.[0-9]{0,2})/g'

最后,[0|1] 可能应该只简化为 [01],除非您想在句点之前匹配 |

【讨论】:

    【解决方案2】:
    perl -nle 'print for /([0|1]\.[0-9]{0,2})/g'
    

    【讨论】:

      猜你喜欢
      • 2015-02-24
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2014-11-24
      相关资源
      最近更新 更多