正则表达式unix开关号

时间:2017-05-24 08:57:44

标签: regex

我有以下文字:

 (took 1.22 seconds)

需要使用正则表达式将时间替换为TIME。 我希望字符串为:

 (took TIME seconds)

我该怎么办?

我在Unix中使用的脚本类似于以下内容:

's/user detected .*$/user detected USER/g'

1 个答案:

答案 0 :(得分:0)

您可以使用以下任何sed解决方案:

s='took 1.22 seconds'
echo $s | sed  's/ [0-9]*\.\?[0-9]\{2\} / TIME /g'
echo $s | sed -E 's/[0-9]*\.?[0-9]{2}/TIME/g'
echo $s | sed -E 's/\b[0-9]*\.?[0-9]{2}\b/TIME/g'

请参阅online demo

模式意味着:

  • [0-9]* - 零个或多个数字
  • \.? - 1或0点
  • [0-9]{2} - 2位数
  • \b - 字边界。