2

我在计算集群上有一些分析代码。代码的输出是一个浮点数表。最终输出被打印到标准输出,在它之前和之后有一堆其他消息。它看起来像这样:

Welcome to Computer X
Setting up parallel environment...
Setup complete.  Running tasks....
0.059 9.342114 10.324921 0.3 0
0.123 123.4231102 231.49 45.7 84
Job completed on July 4, 1776
Thank you and have a nice day

我只需要提取数字。不幸的是,我不知道每个数字将包含多少个数字(它将是 0.342123 还是 1 或 1.05),以及在数字之前或之后有多少文本行。

我以前用过grep,但我对正则表达式一无所知。我查找了例如如何匹配电话号码(###-###-####)等的示例,但我想不出任何你不知道要跳过多少位数的事情。我唯一知道的是,会有 5 列数据要提取。

4

1 回答 1

2

grep -ho与正则表达式模式一起使用

^(\d+(\.\d+)?(\s+|$))+$

或者如果你确定 5 个数字总是在一行中,那么

^(\d+(\.\d+)?(\s+|$)){5}$
于 2012-10-18T19:14:39.243 回答