免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1763 | 回复: 5

[文本处理] awk求助!~!谢谢大家 [复制链接]

论坛徽章:
0
发表于 2015-01-09 20:07 |显示全部楼层
G  Q1  Q2  Q3  ... Q2569 T1  T2   T3 ...T2569
a   1     1    0    ... 1         1    0    1  ...   2
b   2     0    1    ... 2         1    0    1  ...   0

得到:

G    QT1   QT2   QT3    ... QT2569
a      11     10     01     ...    12
b      21     00     11     ...    20

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
发表于 2015-01-09 21:36 |显示全部楼层
本帖最后由 WilliBhamlll 于 2015-01-09 21:38 编辑
  1. $ awk '{printf $1"\t";for(i=1;i++<NF;){if(i<=NF/2+1)printf NR==1?gensub("[0-9]","","g",$i)""$(NF/2+i)"\t":$i""$(NF/2+i)"\t"};print ""}' file
  2. G       QT1     QT2     QT3     QT2569
  3. a       11      10      01      12
  4. b       21      00      11      20

  5. $ cat file
  6. G  Q1  Q2  Q3   Q2569         T1  T2   T3  T2569
  7. a   1     1    0     1         1    0    1     2
  8. b   2     0    1     2         1    0    1     0
复制代码

论坛徽章:
0
发表于 2015-01-09 22:39 |显示全部楼层
回复 2# WilliBhamlll


    应该可以, 非常感谢~!

求职 : Linux运维
论坛徽章:
4
狮子座
日期:2014-12-20 10:15:35天秤座
日期:2014-12-24 16:54:192015年亚洲杯之科威特
日期:2015-01-27 21:32:482015亚冠之平阳省
日期:2015-10-22 16:31:52
发表于 2015-01-09 22:57 |显示全部楼层
本帖最后由 冰谛 于 2015-01-09 22:59 编辑

awk '{for(i=2;i<=(NF+1)/2;i++)  $i=substr($i,1,1)$(NF/2+i);for(i=(NF+1)/2+1;i<=NF;i++) $i=""}1' file | column -t

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2015-01-09 23:02 |显示全部楼层
本帖最后由 zxy877298415 于 2015-01-10 00:18 编辑
  1. awk '{printf $1"\t";for (i=2;i<=(NF+1)/2;i++) {{split($i,a,""); printf a[1]$(i+(NF-1)/2)"\t"}} print ""}' file
  2. G       QT1     QT2     QT3     QT2569
  3. a       11      10      01      12
  4. b       21      00      11      20
复制代码
回复 1# xiayuu119


   

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
发表于 2015-01-09 23:47 |显示全部楼层
本帖最后由 reb00t 于 2015-01-09 23:48 编辑
  1. py练习,请大牛优化。

  2. #!/usr/bin/env  python


  3. fs='''G  Q1  Q2  Q3 Q4 Q2569  T1  T2  T3  T4 T2569
  4. a  1   1   0   1    2  1   0   1   2   3  
  5. b  2   0   1   2    2  1   0   1   0 3'''

  6. lst=[ ]
  7. lines=fs.split('\n')
  8. for l in lines:
  9.         ll=l.split()
  10.         end=len(ll)/2+1
  11.         for index in range(1,end):
  12.                 ll[index]=ll[index][0]+ll[len(ll)/2+index]
  13.                 lst=ll[0:end]
  14.         print ' '.join(lst)

  15. 结果:
  16. G QT1 QT2 QT3 QT4 QT2569
  17. a 11 10 01 12 23
  18. b 21 00 11 20 23

  19. awk版本:
  20. awk '{printf $1"\t";for(i=2;i<=(NF+1)/2;i++) {$i=substr($i,1,1)$(NF/2+i); printf $i"\t"};print ""}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP