如何在行中提取数字(包括科学记数法)

时间:2014-05-19 01:27:23

标签: grep

我有一个包含以下数据的txt文件:

Time = `number`6e-05
Time = `number`6.16667e-05 
Time = `number`6.25581e-05 
Time = `number`6.35182e-05 
Time = `number`6.45605e-05 
Time = `number`6.57037e-05 
Time = `number`6.6974e-05
...

该文件包含大约13,000行

是否有grep命令只提取数字并将其写入另一个文件?

此文件是使用另一个巨大文件中的grep命令生成的。

3 个答案:

答案 0 :(得分:0)

如果文件是nums.txt,那么:

$ egrep -o "[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?." nums.txt > other.file
$ cat other.file
6e-05
6.16667e-05
6.25581e-05
6.35182e-05
6.45605e-05
6.57037e-05
6.6974e-05

应该工作。

答案 1 :(得分:0)

假设原始文件名为data.txt,然后:

$ awk -F "\`" '{print $3}' data.txt > result.txt
$ cat result.txt
6e-05
6.16667e-05 
6.25581e-05 
6.35182e-05 
6.45605e-05 
6.57037e-05 
6.6974e-05

如果您想在问题中获得标记为number的标签值,只需将3更改为2即可。像这样:

awk -F "\`" '{print $2}' data.txt > result.txt

答案 2 :(得分:0)

你可以这样做:

awk -F\` '$0=$NF' old >new
6e-05
6.16667e-05
6.25581e-05
6.35182e-05
6.45605e-05
6.57037e-05
6.6974e-05