由于所在公司是主要做短信行业,平时和手机号码打交道较多,各种奇葩需求也比较多,近期接到一个一个总监的奇葩需求,就是将两个文件中相同的手机号码弄处理,由于编程水平以及excel玩的有限,所以只能自己想其他额办法解决,首先每个文件有好几个字段,不过全是结构化数据,格式如下:

15994710001,2016/11/3 0:24,53100010
15994710001,2016/11/3 0:24,53100010
15001313373,2016/11/3 3:39,53100010
13937713309,2016/11/3 6:16,53100010
13758943333,2016/11/3 7:19,53100010
13868044333,2016/11/3 8:33,53100010
13500732333,2016/11/3 10:29,53100010
13523072333,2016/11/3 10:30,53100010
15138132777,2016/11/3 10:31,53100010
13960985779,2016/11/3 10:45,53100010
此文件有4000多行,
文件2 字段比较多,恰好一部分内容乱码,所以也算保护个人隐私吧。
"311-SD10658"2114781676479382330","13703774555","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","15920510111","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","18319609333","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","15221090555","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","13905879555","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","13818586777","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","13916387773","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","13882133333","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"
"311-SD10658"2114781676479382330","18200980999","11λP50rit","1","2016/11/3 10:07:43","2016/11/3 10:07:41","0","DELIVRD"

处理的思路:

由于只是要相同的号码,所以就在linux下用一些文本处理工具对其处理,先将其处理成只含手机号码的文件,然后再做其他的处理

可以用cut或者awk截取相关的列,但是由于awk不是太熟悉,这里就使用cut截取,注意分隔符以及相关的第几列就可以。

然后可以用grep  比较,也试过diff,但是效果

1、统计两个文本文件的相同行

grep -Ff file1 file2


2、统计file2中有,file1中没有的行 比较两个不同的行

grep  -vFf  file2 file1