请选择 进入手机版 | 继续访问电脑版

微信一键登录

科吉思石油论坛

搜索
查看: 3941|回复: 1

你还在为数据格式转换而苦恼吗?——石油物探人员必须了解的一项技能

[复制链接]

23

主题

28

帖子

396

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
396
发表于 2016-10-21 16:10:24 | 显示全部楼层 |阅读模式
题目:
1.你还在为文本数据格式转换而苦恼吗?——石油物探人员必须了解的技能
2.你还在为地震层位、速度场的格式转换而苦恼吗?——神奇的AWK工具来帮你!
3.自力更生,丰衣足食——物探大伽教你如何快速转换数据格式

做物探或建模的朋友都有过一个痛苦的经历——层位或断层数据就是加不进去,老是报错,不得其解,领导着急,自己也郁闷,今天怎么就被小小的一个输入输出给卡住了。

如果您精通Excel的VBA编程或您是一名C/C++高手,此文您可以忽略,如果您只有那么一点点C语言基础,那么本文对你会非常有用,如果一点C不懂也没关系,看完本文后,你也能快速掌握如何使用AWK。


以前有一个老师傅说过,学软件首先要学得就是如何加载数据,只有各种数据都会正确加载了,才有可能去尝试各种新流程与创意。

应运而生行业有了各种数据桥软件,但那些个软件使用是在固定的套路、固定的对象之前运用,突然有一个第三方或超出现有范围的数据要加载,就会被卡住。

如果您有了AWK工具,一切都是那么随心所欲!
简单来说awk是Linux的一个基本命令,它可以把文件逐行的读入,以空格为默认分隔符将每行切开,切开的部分再进行各种分析处理。

先来看一看AWK有什么强大的地方?
例如,有这么一个地震层位文件a.txt,而我只想要其中的3、4、5列数据:
  1. [focus@kestVM1 /disk1]$ more a.txt
复制代码
  1. 1889     1400       633111.00      5334291.00      1586.14421
  2. 1889     1401       633128.67      5334273.32      1586.78114
  3. 1889     1403       633164.03      5334237.96      1591.58540
  4. 1889     1404       633181.70      5334220.28      1592.64648
复制代码

那么我只需要在Linux命令行输入如下代码:
  1. [focus@kestVM1 /disk1]$ awk '{print $3, $4,$5}' a.txt > b.txt
复制代码

那么就得到了以下结果:
  1. [focus@kestVM1 /disk1]$ more b.txt
复制代码
  1. 633111.00 5334291.00 1586.14421
  2. 633128.67 5334273.32 1586.78114
  3. 633164.03 5334237.96 1591.58540
  4. 633181.70 5334220.28 1592.64648
复制代码

如果需要加上15的带号,并将它们列之前加大一些空格,也得简单:
  1. [focus@kestVM1 /disk1]$ awk '{printf("%15.2f%15.2f%15.2f\n",$3+15000000, $4,$5)}' a.txt > b.txt
复制代码
  1. [focus@kestVM1 /disk1]$ more b.txt
复制代码
  1. 15633111.00     5334291.00        1586.14
  2. 15633128.67     5334273.32        1586.78
  3. 15633164.03     5334237.96        1591.59
  4. 15633181.70     5334220.28        1592.65
复制代码

怎么样?很实用吧!
解释一下,$1即表示读入的是第一列,$2是第二列,printf与C语言的用法是一致的。”>”是定向输出符,表示输出到哪一个文件。
而且,此代码我们可以加入更多功能,辟如判断大小等等,做好后还可以保存以后备用。
AWK本身内置了很多变量,如当前行号等等,语法可以用C的或类C语法,可谓很强大。欲了解更多AWK的基本用法,可以在Linux终端下查看man帮助或直接百度看中文的。

好多物探大咖们为什么加载工区那么快,就是他们自备了符合各自工作习惯的转换代码,非常高效。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|服务支持:DZ动力|科吉思石油技术咨询有限公司 ( 京ICP备15057753号

GMT+8, 2024-3-29 20:42 , Processed in 0.250624 second(s), 35 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表