忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 627 | 回复: 8

[文本处理] 我碰到一个比较难解决的问题,是文本处理的,不知道怎么说,请大神进来看看 [复制链接]

论坛徽章:
0
发表于 2017-05-18 17:25 |显示全部楼层
本帖最后由 巨蟹周子琪 于 2017-05-18 17:35 编辑

查询的结果是这样的
[root@controller ~]# neutron agent-list
QQ截图20170518172158.png

书上的要求是
QQ截图20170518172413.png
而我只能做到这样
QQ截图20170518173505.png
求大神帮忙

论坛徽章:
0
发表于 2017-05-18 17:27 |显示全部楼层
感觉好像不可能完成 毕竟这个太难了

论坛徽章:
53
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2017-05-18 17:48 |显示全部楼层
  1. cyg@win /tmp$ cat f
  2. +-----------+-----------+---------+------+
  3. | id        | aaa       | bbb     | ccc  |
  4. +-----------+-----------+---------+------+
  5. | 123123    | 8888      | 8777    | 9999 |
  6. | 123123    | 8888      | 8777    | 9999 |
  7. | 123123    | 8888      | 8777    | 9999 |
  8. +-----------+-----------+---------+------+
  9. cyg@win /tmp$ awk 'NR==2{for(i=1;i<=split($0,t,"|");i++){p=length(t[i])+1;s=s?s" "p:p}}FIELDWIDTHS=s{$1=$1;if(NR>FNR)printf "%s%s%s\n",$1,$2,$4}' f f
  10. +-----------+---------+
  11. | id        | bbb     |
  12. +-----------+---------+
  13. | 123123    | 8777    |
  14. | 123123    | 8777    |
  15. | 123123    | 8777    |
  16. +-----------+---------+
复制代码

1人打赏

论坛徽章:
0
发表于 2017-05-18 17:52 |显示全部楼层
回复 3# haooooaaa

好厉害啊你,666 谢谢你,真的太牛逼了,这里的大神好多啊 我还以为这个应该不能实现的,太厉害啦你

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2017-05-18 22:14 |显示全部楼层
回复 1# 巨蟹周子琪

try:
  1. $ neutron agent-list | awk -F '[+|]' '{OFS=/\+/?"+":"|";print $1,$8,$3,$6,$1}'
复制代码

论坛徽章:
0
发表于 2017-05-18 23:19 |显示全部楼层
haooooaaa 发表于 2017-05-18 17:48


来自苹果客户端来自客户端

论坛徽章:
0
发表于 2017-05-18 23:20 |显示全部楼层
get awk用这么6
来自苹果客户端来自客户端

论坛徽章:
0
发表于 2017-05-19 18:12 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-05-19 18:16 编辑

画框子,太简单了吧,用任何语言写一个函数,即可一劳永逸。
思路讲解:
用一个二维数组,表示每一个点。横用-表示,竖用|,交叉用+表示。
画的时候,是从左到右,一列列画过去的。
根据行算出横线坐标,根据列算出列坐标。
先画框子,然后填内容。

画得再好,也是字符的悲哀。也是linux的癌症。
还是win+powershell+【Get-Process |Out-GridView】这种表格爽。


论坛徽章:
115
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期: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
发表于 2017-05-21 14:24 |显示全部楼层
本帖最后由 jason680 于 2017-05-21 15:45 编辑

回复 1# 巨蟹周子琪




  1. $ cat f
  2. +-----------+-----------+---------+------+
  3. | id        | aaa       | bbb     | ccc  |
  4. +-----------+-----------+---------+------+
  5. | 123123    | 8888      | 8777    | 9999 |
  6. | 123124    | 8889      | 8778    | 9990 |
  7. | 123125    | 8880      | 8779    | 9991 |
  8. +-----------+-----------+---------+------+

  9. $ awk -vk="ccc,id" -f get_kw.awk f
  10. +------+-----------+
  11. | ccc  | id        |
  12. +------+-----------+
  13. | 9999 | 123123    |
  14. | 9990 | 123124    |
  15. | 9991 | 123125    |
  16. +------+-----------+

  17. $ awk -vk="bbb,ccc" -f get_kw.awk f
  18. +---------+------+
  19. | bbb     | ccc  |
  20. +---------+------+
  21. | 8777    | 9999 |
  22. | 8778    | 9990 |
  23. | 8779    | 9991 |
  24. +---------+------+

  25. $ awk -f get_kw.awk f
  26. Usage  : awk -vk="kw1,kw2,..." -f get_kw.awk FILE
  27. Example: awk -vk="binary,agent_type,alive" -f get_kw.awk file
  28. Example: neutron agent-list | awk -vk="binary,agent_type,alive" -f get_kw.awk
复制代码


$ cat get_kw.awk
  1. BEGIN{
  2.   if(k==""){
  3.     print "Usage  : awk -vk=\"kw1,kw2,...\" -f get_kw.awk FILE"
  4.     print "Example: awk -vk=\"binary,agent_type,alive\" -f get_kw.awk file"
  5.     print "Example: neutron agent-list | awk -vk=\"binary,agent_type,alive\" -f get_kw.awk"
  6.     exit
  7.   }
  8.   OFS=FS="|";
  9. }
  10. function trim(s){
  11.   gsub("^ +| +$","",s);
  12.   return(s);
  13. }
  14. function gh(s,k,n,t){
  15.   t=split(s,a,",");
  16.   for(n=2;n<=NF;++n){
  17.     ak[trim($n)]=n;
  18.   }
  19.   for(n=1;n<=t;++n){
  20.     k=a[n];
  21.     if(!ak[k]){
  22.       print "CAN NOT find the "k" key word in\n"$0;
  23.       exit;
  24.     }
  25.     h = h "+" ah[ak[k]]
  26.     an[++c] = ak[k];
  27.   }
  28.   h = h "+"
  29. }
  30. /^+-+/{
  31.   if(!h){
  32.     split($0,ah,"+");
  33.     next;
  34.   }
  35.   print h;
  36.   next
  37. }
  38. {
  39.   if(!h){
  40.     gh(k);
  41.     print h;
  42.   }
  43.   s = FS
  44.   for(n=1;n<=c;++n)
  45.     s= s $an[n] FS
  46.   print s
  47. }
复制代码

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

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP