打印所有正则表达式匹配

时间:2014-04-02 19:49:59

标签: regex perl sed awk grep

我正在使用下面的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"

2 个答案:

答案 0 :(得分:4)

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

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

最后,[0|1]可能只需缩减为[01],除非您希望在此期间之前匹配|

答案 1 :(得分:2)

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