免费注册 查看新帖 |

Chinaunix

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

[文本处理] 文本处理求助-列表画框 [复制链接]

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-05-07 14:21 |只看该作者 |倒序浏览
大家好!
我有一个问题向大家请教。
有以下一个文本。



  1. 2017-05-07 13:56:10 mbox [29/3317]
  2. 2017-05-07 14:03:34 abox [1974/7052]
  3. 2017-05-07 14:01:54 hbox [1327/7144] *
  4. 2017-05-07 14:02:37 mbox [211/906]
  5. 2017-05-07 14:04:37 lbox [1535/1535] *
  6. 2017-05-07 14:01:35 pbox [4562/13055]
  7. 2017-05-07 14:01:46 tbox [98/98] *
复制代码





希望对其进行处理,输出以下用框分割的列表。


  1. +----------+--------+----+------------+-+
  2. |2017-05-07|13:56:10|mbox|[29/3317]   | |
  3. |2017-05-07|14:03:34|abox|[1974/7052] | |
  4. |2017-05-07|14:01:54|hbox|[1327/7144] |*|
  5. |2017-05-07|14:02:37|mbox|[211/906]   | |
  6. |2017-05-07|14:04:37|lbox|[1535/1535] |*|
  7. |2017-05-07|14:01:35|pbox|[4562/13055]| |
  8. |2017-05-07|14:01:46|tbox|[98/98]     |*|
  9. +----------+--------+----+------------+-+
复制代码




谢谢大家!

论坛徽章:
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
2 [报告]
发表于 2017-05-07 20:45 |只看该作者
回复 1# bikkuri

$ awk 'function x(s,n,r,c){for(c=1;c<=n;++c)r=r s;return(r)}FNR==NR{for(n=1;n<=NF;++n){len=length($n);if(a[n]<len)a[n]=len};if(nf<NF)nf=NF;next}FNR==1{h="+";for(n=1;n<=nf;++n)h=h x("-",a[n])"+";h=h;print h}{s="|";for(n=1;n<=nf;++n)s=s sprintf("%-*s|",a[n],$n);print s}END{print h}' FILE FILE
+----------+--------+----+------------+-+
|2017-05-07|13:56:10|mbox|[29/3317]   | |
|2017-05-07|14:03:34|abox|[1974/7052] | |
|2017-05-07|14:01:54|hbox|[1327/7144] |*|
|2017-05-07|14:02:37|mbox|[211/906]   | |
|2017-05-07|14:04:37|lbox|[1535/1535] |*|
|2017-05-07|14:01:35|pbox|[4562/13055]| |
|2017-05-07|14:01:46|tbox|[98/98]     |*|
+----------+--------+----+------------+-+

论坛徽章:
0
3 [报告]
发表于 2017-05-07 21:10 |只看该作者
本帖最后由 sxingbai 于 2017-05-07 21:48 编辑

刚学awk
冒昧说一下自己的想法
第一步,先全局替换\s+为|,$0开关结尾再加|
第二步,以|为输入分隔符,求出所有记录中各字段的最大长度
第三步,临时变输出分隔符为+,依据各字符段长度打印-
第四步,依据各字段最大长度print各字段,不足补空,
第四步,重复第三步

论坛徽章:
0
4 [报告]
发表于 2017-05-07 21:48 |只看该作者
纸上谈兵问题很多

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
5 [报告]
发表于 2017-05-08 10:51 |只看该作者
谢谢大家的指点。
我用以下命令得到了希望的结果。

  1. [root@hp8:~]# awk '{j=j+1;for(i=1;i<=NF;i++){l[i]=(length($i)>l[i])?length($i):l[i];b[j,i]=$i}}END{for(i=1;i<=length(l);i++){printf"+";for(k=1;k<=l[i];k++)printf"-"};printf "+\n";for(k=1;k<=j;k++){for(i=1;i<=length(l);i++)printf("|%-"l[i]"s",b[k,i]);printf "|\n"};for(i=1;i<=length(l);i++){printf"+";for(k=1;k<=l[i];k++)printf"-"};printf "+\n";}' file
  2. +----------+--------+----+------------+-+
  3. |2017-05-07|13:56:10|mbox|[29/3317]   | |
  4. |2017-05-07|14:03:34|abox|[1974/7052] | |
  5. |2017-05-07|14:01:54|hbox|[1327/7144] |*|
  6. |2017-05-07|14:02:37|mbox|[211/906]   | |
  7. |2017-05-07|14:04:37|lbox|[1535/1535] |*|
  8. |2017-05-07|14:01:35|pbox|[4562/13055]| |
  9. |2017-05-07|14:01:46|tbox|[98/98]     |*|
  10. +----------+--------+----+------------+-+
  11. [root@hp8:~]#
复制代码






论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
6 [报告]
发表于 2017-05-08 10:57 |只看该作者

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP