免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2264 | 回复: 5
打印 上一主题 下一主题

[文本处理] 关于ses,awk,grep文本过滤工具的应用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-02-10 14:40 |只看该作者 |倒序浏览
本帖最后由 Linux9253 于 2015-02-10 14:48 编辑
  1. ID        YWQQID        SQRQ        SQSJ        KHH        FUNC        FUNC_NAME        FID        CLRQ        CLSJ        CLZT        CB_CLZT        ISLOCK        RETRY        REQ_DATA        CDATA        TASK_DATA


  2. 30191        -1        20141023        10:44:12        10000040228        YHZHGL_CGZHKH        存管银户        #VALUE!        20141023        10:44:13        8        0        0     {"req_data":{"zjlb":"0","fqqd":"2","fqgydm":"90016101","yhzh":"6260605899810","khh":"010000040228","remark":"","bz":"1","khqz":"620","czzd":"114.81.254.172","jmlx":"3","khyyb":"0100","zzjzh":"10253604","zjbh":"330427610140070","zjzh":"10253604","khmc":"王小","fqr":"90016101","yhdm":"GDYH","cgzdfs":"1","khfs":"3","yhmm":"I6IJgPG1b74mWKXUVk06t9y2Xfako+OoHIUyD/gBXq8=","ywxt":"1000","zhlb":"1","ywzh":"010000040228","gtzjzh":"01000004022801"},"func":"YHZHGL_CGZHKH","stype":"service","ywqqclid":30191,"ywzh":"010000040228"}        {"clzt":8,"code":111,"code_hb":111,"code_sq":1,"dfsqh":"1417","func":"YHZHGL_CGZHKH","note":"业务回报功","note_hb":"业务回报","note_sq":"申请","yhcgzh":"6226660605810","ywqqclid":30191,"ywxt":1000,"ywzh":"010000040228"}        {}


  3. 29270        -1        20141021        15:07:56        1000040223        YHZHGL_CGZHKH        存管银行开户        -1        20141021        15:07:58        8        0        0     {"req_data":{"zjlb":"0","fqqd":"2","fqgydm":"90016101","yhzh":"62225203168","khh":"010000040223","remark":"","bz":"1","khqz":"0100","czzd":"114.90.32.98","jmlx":"3","khyyb":"0100","zzjzh":"10252004","zjbh":"4306108031519","zjzh":"10252004","khmc":"李行","fqr":"90016101","yhdm":"PFYH","cgzdfs":"1","khfs":"2","yhmm":"/hwIKEdC5wqoicSbWsQSe/UejoZ05D0LJU7fSGZXI8c=","ywxt":"1000","zhlb":"1","ywzh":"010000040223","gtzjzh":"01000022301"},"func":"YHZHGL_CGZHKH","stype":"service","ywqqclid":29270,"ywzh":"0100040223"}        {"clzt":8,"code":111,"code_hb":111,"code_sq":1,"dfsqh":"1990","func":"YHZHGL_CGZHKH","note":"业务回报成功","note_hb":"业务回报成功","note_sq":"申请成功","yhcgzh":"622522013168","ywqqclid":29270,"ywxt":1000,"ywzh":"01000040223"}        {}
复制代码
这是一个文件、共三行(现实中不止三行),第一行是对应的字段id,后两行的格式一样,
简单的来说格式是这样的
  1. [root@localServer ~]# vim adm
  2. 1   2   3   4   
  3. z   x   c   d   q:w,r:y
  4. q   w   e   r   q:t,r:i
复制代码
处理成
  1. 2   3   q   r
  2. x   c   w   y
复制代码
也就是说、第一行有的字段,打印出来,没有的,打印出所得结果“:”前面的内容
比如查找x,w这一列,第一行有2,那么打印出来、但要是打印y,i的话、第一行就没有了、那么就打印y,i冒号之前的内容到第一行
现在我要KHH,CLZT,yhdm,khmc,zjbh,ywqqclid,这几个字段,前两个KHH,CLZT位置是固定的
yhdm,khmc,zjbh,ywqqclid这几个字段都是属于例子中q:w,r:y的位置,但q和r的前后位置不固定






这是我写的、本来是可以的。但如果q和r的位置变了、就行不通了。请大牛帮忙。。。。

QQ截图20150210145457.png (19.58 KB, 下载次数: 37)

这是我写的语句、如果q和r的前后位置变了、就行不通了

这是我写的语句、如果q和r的前后位置变了、就行不通了

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
2 [报告]
发表于 2015-02-10 15:36 |只看该作者
真的没看懂要做什么

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2015-02-10 16:10 |只看该作者
回复 1# Linux9253

It's hard to know what you say, but I guess ...

$ awk -vs="KHH CLZT yhdm khmc zjbh ywqqclid" 'NR==1{ac=split(s,a," ");print s;for(c=1;c<=ac;c++){m=0;for(n=1;n<=NF;n++)if(a[c]==$n)an[c]=n}next}NF>1{gsub("} +{",",");gsub("[{}\"]","");bc=split($NF,b,"[:,]");if(!C++)for(c=1;c<=ac;c++)if(!an[c])for(n=1;n<=bc;n++)if(b[n]==a[c])bn[c]=n+1;p=$an[1];for(c=2;c<=ac;c++){p=p" "(an[c]?$an[c]:b[bn[c]])};print p}' FILE | column -t
KHH          CLZT  yhdm  khmc  zjbh             ywqqclid
10000040228  8     GDYH  王小  330427610140070  30191
1000040223   8     PFYH  李行  4306108031519    29270

论坛徽章:
0
4 [报告]
发表于 2015-02-10 17:32 |只看该作者
回复 3# jason680


   
非常感谢你的回答。很符合我的格式要求,但为什么我执行后是这样的?
少了几个字段

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2015-02-10 22:53 |只看该作者
回复 4# Linux9253

modify

gsub("} +{",",");

gsub("}[\t ]+{",",");
   

论坛徽章:
7
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:18程序设计版块每日发帖之星
日期:2015-08-09 06:20:00每日论坛发贴之星
日期:2015-08-09 06:20:00程序设计版块每日发帖之星
日期:2015-08-22 06:20:00程序设计版块每日发帖之星
日期:2015-08-27 06:20:00
6 [报告]
发表于 2015-02-11 09:47 |只看该作者
好多程序媛啊。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP