`
文章列表
假设我们有一个数据文件形如下: A,B A,C A,D B,E B,F D,A D,B E,G ....   需求是要将其转变为如下形式: A:B,C,D B:E,F D:A,B E,G ......     需求很简单,循环遍历文件,然后trace第一列即可。 在这里,我们讨论用Shell脚本如何实现这个简单的需求。     在shell中面对这样的需求,最好的办法莫过于使用awk了,不过除了awk之外,linux也有其他命令能遍历文件内容,比如说cat以及输入重定向等,下面我们就对这几种文件遍历方法做下比较。   首先申明一点,关于文件遍历 ...
今天有点无聊,打通ssh的时候遇到了问题,搞了半天才搞定。 在搞的过程中发现,在两台经过ssh打通的机器很容易将消息发送到彼此。 进而想想,如果收到消息的机器能够即时将内容显示出来,那不就是一个山寨版的即时聊天工具嘛,哈哈。   于是我的恶搞开始了。。。   基本思路如下:   1. 最核心的其实就是使用ssh执行远程命令,将内容写到远程计算机的文件中。 2. 消息接受机器监控某个消息文件,一旦发现有消息到大,就取出来,并将其写到标准输出,让用户知道。 3. 同时接受消息的机器可以接受用户的输入,并将其发送到另一台机器。 ---消息接收器的守护进程需要在后台run,接受用 ...
在进行数据抽样时,我们关注所抽取的数据在整体数据中分布的均匀性。 最简单的就是均匀抽取,即每隔几行选取一行。 比如,数据文件较大时,每隔10行或者每隔100行进行抽取。   假如数据文件还是“msg” 我们每隔10行取一行,有两种方法:   方法1:nl+grep   nl msg | grep -P '1\t' > target_file   方法2:awk   awk '{if(NR%10 ==1) print $0}' msg > target_file   两种方法都可以满足我们提出的需求。 但经过比较后发现,方法2效率略高于方法1,msg数 ...
有时候,我们要简单统计下一个文件中包含某个特殊字符串的行数。 我第一个想到的是grep + wc,不知道你想到了什么,不过,我们确实有多种方法。   假如我们的文件叫msg,里面有23380092行数据。 某些行是这样的receive: msg1 我们的任务是找出这些行的数量。   1. grep方法 grep ' msg1' msg | wc -l 使用这种方法耗时: 1s   2. awk方法 awk 'BEGIN{c=1}{if($0 ~ / msg1/) c=c+1}END{print c}' msg 使用这种方法耗时:8s   3. 另一种awk方法 ...

ssh 打通注意

在两台linux服务器之间(A,B)使用ssh打通的简单步骤为:   A:   cd cd .ssh ssh-keygen   B:   cd cd .ssh ssh-keygen         分别将两台机器生成的id_rsa.pub文件中的内容追加拷贝到 另一台 机器上的.ssh/authorized_keys文件内。   如果此时打通还不成功,可以看下authorized_keys文件的权限。   执行如下命令:   chmod 600 authorized_keys   然后就OK了。  
  本来早就打算要写一篇日志来讲讲ETL测试的自动化执行,以及ETL自动化测试框架实现的一些相关东东。前后托了近一个月,今天总算落实到键盘了。   不过由于部门组织结构调整,该ETL测试框架面临着刚出生就可能夭折的命运,现在写起来,似乎也夹杂一些悲壮。 其实这个ETL自动化测试框架是我在09年面试阿里巴巴ETL测试职位的时候就在脑海中盘旋了。当时的面试官,也是自己后来的主管boss说我们要自己搞一套ETL的自动化测试框架。然后我就怀揣着理想来了...   而10年7月入职之后,由于种种原因,该理想都未能付诸于实际。有环境的因素,也有自己积累不到位的原因。直到前一段时间,自己算是有 ...
  我们在ETL测试过程中经常甚至是必须要检测某一批数据中的某些维度在表范围内是否重复。   本文就介绍两种检测数据重复的简单方法。   方法1: SQL法 如果这些数据在数据库中,那完全简单而且OK。具体方法为:   s ...
昨天做了一个将Excel中准备的数据转化成对应的SQL的功能。 其实核心就是用poi库去读取Excel文件就好了。   由于Excel文件不同于纯文本的csv或其他文件,其本身的数据对象(即一个Cell)是有类型的。   不能将所有的数据都当做string来处理,在读取时首先要判断当前Cell的cellType。cellType共有集中类型:string、numeric、bool、date、formula等。   我这里变只用到了string、numeric两种,然后通过getStringCellValue和getNumericCellValue读取对应的值。   但是如果我 ...
现在,我们有一个文件,样子长成这个样子的: 该数据共有两列数据,col1,col2.col1是字符串类型的,col2为数字类型。这样的数据一共有多少呢? 一共有:25165824。   现在我们的目标是统计col1中每个值出现的次数,并把对应的col2的值加起来,并且得到平均值。 这样是放在关系数据库里,用SQL的话,十分容易搞定,SQL如下:     select col1 name ,count(1) count ,sum(col2) ...
前阵子在博客中总结了关于ETL测试的来龙去脉,简单粗浅地明确了ETL测试是做什么的,以及为什么需要ETL测试的问题。今天我们再来讲讲ETL测试怎么做,以及怎么做会比较好,效率高。   首先,谈到了测试,通俗讲无外乎就是通过设计一定的输入、经过被测对象的运算之后,对生成的输出数据的正确性进行校验。如果发现所有的测试输入,得到的测试输出,都和预期的一致,那么测试就是通过的。否则就是被测对象的逻辑出现了问题,就是我们说的发现了bug。     那么对于ETL测试来讲,输入是什么呢?如何设计输入数据才能充分地测试被测对象呢?   一、测试数据的构造:   如果你记性好,一定还记得在软 ...
刚刚看到了linux中的printf命令,格式化输出文件中的年内容。发现挺有用的。 比如我们的程序生成了如下的数据文件: a b c d ******** d e f g ******** asdfas asd d a ******** haha nihao gogog abc 这样明显一看就是用*******分隔,每个区间内表示一条记录的详细信息。 那怎样将这个文件中的******之间的每条记录显示在一行呢?如果能对其就更好了。   我们这么搞一下, 我们只需要这么一条命令: printf '%10s\t%10s\t%10s\t%10s\n ...
自己是做数据仓库ETL测试的,可能这还是个新的工种,没什么经验可循,大家都在摸着石头过河。     首先,什么是数据仓库,我的感性理解是:   将一个公司范围内的业务数据进行收集汇总,放在一个很大的池子里,以 ...
我们知道PHP中的Array在内部是以Hash的结构进行存储的。本文主要重点也是对PHP中Array的静态结构和动态结构进行分析和记录。 这里的静态结构,是指存储PHP中Array数据时使用的数据结构,即所谓的HashTable。 动态结构,是指程序在运行过程中,Array数据的存储状态。   首先PHP中的hashTable的结构如下: typedef struct bucket { ulong h; /* Used for numeric indexing */ uint nKeyLength; voi ...
前段时间讨论了在PHP中生成某多个某字符或字符串的字符串的问题,呵呵。这句话听起来太别扭了。举个例子就是,生成10个a的字符串就是aaaaaaaaaa。当然这里的a可以是ab或任何其他字符串。   在博客“生成固定长度的某字符 ...
今天看到了PHP实现的标准扩展函数这一段,第一个挑了string相关的函数来看,毕竟这个是用的最多的。 看到了strtoupper函数的实现。如下: char *php_strtoupper(char *s, size_t len) { unsigned char *c, *e; c = (unsigned char *)s; e = (unsigned char *)c+len; while (c < e) { *c = toupper(*c); c++; } ...
Global site tag (gtag.js) - Google Analytics