grep 和 sed 仅从文本文件的行中提取数字

grep 和 sed 仅从文本文件的行中提取数字

我想从文本文件中提取数字。如下所示:

corner_lat:     49.0425000  decimal degrees

我使用以下表达方式:

grep corner_lat EQA.dem_par | sed "s,[^0-9]*,,"

但是这也会返回“十进制度”如何修改它以仅获取数字?

答案1

您必须使用g(全局替换)来替换您正在寻找的所有模式:

grep corner_lat EQA.dem_par | sed "s/[^0-9.]*//g"

或者如你所写:

grep corner_lat EQA.dem_par | sed "s,[^0-9.]*,,g"

不要忘记添加.角色类别,否则它也会被删除。

您的命令仅删除第一次出现的模式:

corner_lat:     

然后离开:

49.0425000  decimal degrees

答案2

如果文件中所有行的格式相同,则可以使用awkcut代替sed仅提取第二列。

举个例子:

grep corner_lat EQA.dem_par | awk '{print $2}'

相关内容