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