免费注册 查看新帖 |

Chinaunix

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

[文本处理] 求一个比较麻烦的文本处理shell,行转为列 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-21 21:16 |只看该作者 |倒序浏览
本帖最后由 softiger 于 2014-06-22 00:56 编辑


求一个BSHELL,文本处理,把行转为列。

例如:
FC ????????
DS System VPD
YL U9179.MHB.06DA2CP
FC ????????
DS CEC
YL U78C0.001.DBJN209
FC 78C0-001
FC ????????
DS BP EXTENSION   
YL U78C0.001.DBJN209-P1
FN 74Y2627
FC ????????
DS FSP            
YL U78C0.001.DBJN209-P1-C1
FN 74Y3666
FC ????????
DS INFINIBAND 12X  
YL U78C0.001.DBJN209-P1-C2
FN 46K3937
FC ????????
DS I/O BACKPLANE   
YL U78C0.001.DBJN209-P2
FN 74Y2554
FC ????????
DS ANCHOR         
YL U78C0.001.DBJN209-P2-C7
FN 74Y2635
FC ????????
DS 4 X 1GB ETHERNET
YL U78C0.001.DBJN209-P2-C8
FN 46K5965
FC ????????
DS PSBPD6MR  3GSAS
YL U78C0.001.DBJN209-P2-C9
FN  74Y5511
FC ????????
DS PROCESSOR BX   
YL U78C0.001.DBJN209-P3
FN 74Y2631
FC ????????
DS Memory DIMM
YL U78C0.001.DBJN209-P3-C1
FN 45D7238
FC ????????
DS Memory DIMM
YL U78C0.001.DBJN209-P3-C2
FN 45D7238
FC ????????
DS Memory DIMM
YL U78C0.001.DBJN209-P3-C3
FN 45D8414
FC ????????
DS Memory DIMM
YL U78C0.001.DBJN209-P3-C4
FN 45D8414
FC ????????
DS MEM REGULATOR   
YL U78C0.001.DBJN209-P3-C5
FN  74Y8269
FC ????????
DS Memory DIMM
YL U78C0.001.DBJN209-P3-C6
FN 45D7238
转为:
FC|DS|YL|FN
????????|System VPD|U9179.MHB.06DA2CP
????????|CEC|U78C0.001.DBJN209
????????|BP EXTENSION||U78C0.001.DBJN209-P1|74Y2627
????????|FSP|U78C0.001.DBJN209-P1-C1|74Y3666
????????|INFINIBAND 12X|U78C0.001.DBJN209-P1-C2|46K3937
????????|I/O BACKPLANE|U78C0.001.DBJN209-P2|FN 74Y2554
????????|ANCHOR|U78C0.001.DBJN209-P2-C7|74Y2635
????????|4 X 1GB ETHERNET|U78C0.001.DBJN209-P2-C8|46K5965
????????|PSBPD6MR  3GSAS|U78C0.001.DBJN209-P2-C9|74Y5511
... ...

输入文件请见附件
input.zip (1.84 KB, 下载次数: 6)






非常感谢

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2014-06-21 21:55 |只看该作者
本帖最后由 关阴月飞 于 2014-06-21 21:59 编辑

是这结果不:
  1. paste -s -d"|"  <(cut -d' ' -f1 urfile) <(cut -d' ' -f2- urfile)
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-06-21 22:12 |只看该作者
awk 麻烦一些:
  1. awk  '{for(i=1;i++<NF;)a=a?a FS $i:$i;b=b?b"|"$1:$1;c=c?c"|"a:a;a=d}END{print b"\n"c}' urfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2014-06-22 00:58 |只看该作者
回复 2# 关阴月飞


    不行啊,谢谢支持,可否再帮忙诊断一下?非常感谢

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
5 [报告]
发表于 2014-06-22 01:58 |只看该作者
回复 4# softiger


    怎么个不行法???

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
6 [报告]
发表于 2014-06-22 01:59 |只看该作者
回复 4# softiger


    改需求了

论坛徽章:
0
7 [报告]
发表于 2014-06-22 02:02 |只看该作者
回复 6# 关阴月飞


刚才脚本调试过,输出是不正确的。

之前的文本更加没有规律,应该会比较麻烦。我把它格式化了一下,使得输入更加统一,否则处理起来更加复杂。

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
8 [报告]
发表于 2014-06-22 15:41 |只看该作者
本帖最后由 关阴月飞 于 2014-06-22 15:50 编辑

回复 7# softiger


    例如:
FC ????????
DS System VPD
YL U9179.MHB.06DA2CP
FC ????????
DS CEC
YL U78C0.001.DBJN209
FC 78C0-001   <==  这一行的值怎么处理,你的输出中没有
FC ????????

DS BP EXTENSION   
YL U78C0.001.DBJN209-P1
FN 74Y2627
FC ????????
DS FSP            
YL U78C0.001.DBJN209-P1-C1
FN 74Y3666


FC ????????
DS Memory DIMM
YL U78C0.001.DBJN209-P3-C6
FN 45D7238


是以这种形式算一段,合成一行??成这样:
FC|DS|YL|FN
????????|Memory DIMM|U78C0.001.DBJN209-P3-C6|45D7238
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP