免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 韩云飞
打印 上一主题 下一主题

[文本处理] 行转列,求帮助,在线等 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-07-14 15:32 |只看该作者
厉害,学习了。

我的笨方法。
  1. [root@localhost awk]# awk 'BEGIN{t="ABCDEFG";split(t,tb,"");i=1;}{if(NF==1){print tb[i] ")" $0;i++}else{ if(NF==3){++j;if(j%4==0){printf("%5s%-5s%5s\n",$1") ",$2,$3" ")}else{printf("%5s%-5s%5s",$1") ",$2,$3" ")}  } }}END{print ""}' g
  2. A)四大名著
  3.   1) 西游记 101   2) 三国演义 102  22) 红楼梦 103   4) 水浒传 104
  4. B)四大才女
  5. 10) 上官婉儿 301  13) 蔡文姬 503  34) 李清照 730  11) 班昭 333
  6. C)四书五经
  7. 32) 论语 303  12) 孟子 555  33) 大学 807  44) 中庸 555
  8. 61) 诗   694  74) 书   701  92) 礼   805  82) 易   883
  9. 99) 春秋 992
复制代码

论坛徽章:
1
双鱼座
日期:2014-08-25 19:13:11
12 [报告]
发表于 2014-07-14 18:56 |只看该作者
本帖最后由 fxpbupt 于 2014-07-14 19:17 编辑

awk -vC=65 '/^[^0-9]/{printf("\n%c)%s\n",C++,$0) } /^[0-9]/ {printf("%d)%s%d\t",$1,$2,$3);i++;if( i%4==0 ){printf("\n")}}' urfile

C=65 刚学到

笨方法,只能想到这个了

论坛徽章:
0
13 [报告]
发表于 2014-07-16 06:21 |只看该作者
thx  只要能解决问题就是好办法

回复 12# fxpbupt


   

论坛徽章:
0
14 [报告]
发表于 2014-07-16 10:48 |只看该作者
回复 2# jason680


    请问NF放在最前端是什么意思“NF{if(/^[0-9]/)”

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
15 [报告]
发表于 2014-07-16 10:57 |只看该作者
回复 14# 酋长海布里

其实就是为了只处理非空行,因为空行的NF=0,所以不会处理空行~
   

论坛徽章:
0
16 [报告]
发表于 2014-07-17 10:04 |只看该作者
回复 15# yestreenstars


    知道了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP