关闭

awk 提取用户areacode的例子

693人阅读 评论(0) 收藏 举报

目的把第四列的areacode 提取出来放到第三列把余下的部分放第四列,第四列有多种形式本地号码不带区号的,外地号码带区号的

外地号码带17909+区号+(固定电话号码)/(手机号码),17908 ip卡,179690+手机号码,0+手机号码等

文件内容形如:以tab分割共8列 noarc04.txt
/*
0874 8793865 0 8793419 2006-04-1909:11:39 51 2006-04-1909:12:30 1304
0874 5657527 0 13769775640 2006-04-1821:42:46 39 2006-04-1821:43:25 1304
0874 8793277 0 13408748444 2006-04-1821:39:05 652 2006-04-1821:49:57 1304
0874 8793865 0 13769687343 2006-04-1909:14:01 90 2006-04-1909:15:31 1304
0874 5763248 0 5761247 2006-04-1909:18:39 26 2006-04-1909:19:05 1304
0874 4050528  08583453433 2006-04-2413:36:45 15 2006-04-2413:37:00 1303
0874 4050528  08583457433 2006-04-2413:37:29 9 2006-04-2413:37:38 1303
0874 4050528  08583457433 2006-04-2413:38:11 9 2006-04-2413:38:20 1303
0874 4050528  08583457433 2006-04-2413:34:57 15 2006-04-2413:35:12 1303
0874 6618988  13408724542 2006-04-0621:43:15 7 2006-04-0621:43:22 1304
*/

#cmdline
awk  -F '/t' -f tl.awk noarc04.txt |more

#awk source
BEGIN {
my3=0 ;#定义两个临时变量以便于最后打印修改后的数据
my4=0 ;
}
{
if($4 ~/^179/)#如果第四列以179开头
{
   if($4 ~/^17908/)
   {
      my3=17908 ;
      my4="" ;
   }else if ($4 ~179690)
             {
           my3=179690 ;
           my4=substr($4,7,11);
             }else {
     my3=substr($4,1,9) ;
     my4=substr($4,10,11) ;
   }
}else if($4 ~/^013/)
{
   my3=0 ;
   my4=substr($4,2,11) ;
}else if($4 ~/^02/)
{
  my3=substr($4,1,3);
  my4=substr($4,4,11);
}else if($4 ~/^0/)
{
  my3=substr($4,1,4);
  my4=substr($4,5,11);
}
else{
my3=$3 ;
my4=$4 ;
}
printf("%s/t%s/t%s/t%s/t%s/t%s/t%s/t%s/n",$1,$2,my3,my4,$5,$6,$7,$8);
}

 

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12937次
    • 积分:244
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论