用小数位数限制数字

时间:2015-09-20 02:15:02

标签: linux grep

我正在试图弄清楚如何从包含带小数的数字的文件中读取时间戳,但我似乎无法获得我正在寻找的输出,任何帮助都会很棒!提前致谢。

示例:

[Time since reference or first frame: 691.933275000 seconds]
[Time since reference or first frame: 691.953127000 seconds]
[Time since reference or first frame: 691.992275000 seconds]
[Time since reference or first frame: 691.997590000 seconds]

结果应为:

691.933275000
691.953127000
691.992275000
691.997590000

我尝试过的事情:

grep '[0-9]\.[0-9]' tmp.txt
grep -Eo '[0-9]\.[0-9]' tmp.txt
grep -Eo '([0-9]{1,10}[\.]){1,10}[0-9]' tmp.txt

2 个答案:

答案 0 :(得分:0)

以下是使用Perl解决它的方法:

perl -lane 'for (@F) {print if /^\d+\.?\d+$/}' file

使用以下命令行选项:

  • -n循环输入文件的每一行,不自动打印行

  • -l在处理之前删除换行符,然后将其添加回来

  • -a autosplit模式 - 将输入行拆分为@F数组。默认为在空格上拆分

  • -e执行perl代码

perl代码将每个输入行拆分为@F数组,然后遍历每个字段并决定是否打印它。

正则表达式/^\d+\.?\d+$/用于每个以空格分隔的单词

  • ^

  • 开头
  • \d+一个或多个数字

  • \.?零或一。

  • \d+一个或多个数字

  • $结束

答案 1 :(得分:0)

$ cut -d' ' -f7 file
691.933275000
691.953127000
691.992275000
691.997590000