免费注册 查看新帖 |

Chinaunix

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

[急!]shell处理复杂文本转换? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-22 16:46 |只看该作者 |倒序浏览
将近1G的文件中,数据格式如下:"ab","2,c,d,1,3",需要转换成以下两种格式的两个文件:
1、"ab","2|c=1|d=3|";
2、"ab","c","1"
     "ab","d","3"
其中2代表后面参数的个数,c,d为参数,1,3为参数值;
请问,这两种文件转换如何用shell处理?
谢谢!

[ 本帖最后由 cuixuezheng 于 2009-5-22 16:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-05-22 17:02 |只看该作者
哪位高手能够指导一下?

论坛徽章:
0
3 [报告]
发表于 2009-05-22 17:06 |只看该作者

  1. 1、"ab","2|c=1|d=3|";
  2. awk -F"[,\"]" '{printf "\""$2"\",\""$5; for(i=1;i<=$5;i++) printf "\174"$(5+i)"="$(5+i+$5); print "\";"}' URFILE

  3. 2、"ab","c","1"
  4.      "ab","d","3"
  5. awk -F"[,\"]" '{for(i=1;i<=$5;i++) print "\""$2"\",\""$(5+i)"\",\""$(5+i+$5)"\""}' URFILE
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-05-22 17:14 |只看该作者
谢谢!但是第二列参数的数目是变的,每行数据都是不一样的,如何处理呢?

论坛徽章:
0
5 [报告]
发表于 2009-05-22 17:17 |只看该作者
参数变了有影响吗?

  1. [root]# echo "\"ab\",\"3,c,d,e,1,3,5\"" | awk -F"[,\"]" '{for(i=1;i<=$5;i++) print "\""$2"\",\""$(5+i)"\",\""$(5+i+$5)"\""}'
  2. "ab","c","1"
  3. "ab","d","3"
  4. "ab","e","5"

  5. [root]# echo "\"ab\",\"3,c,d,e,1,3,5\"" | awk -F"[,\"]" '{printf "\""$2"\",\""$5; for(i=1;i<=$5;i++) printf "\174"$(5+i)"="$(5+i+$5); print "\""}'
  6. "ab","3|c=1|d=3|e=5"
复制代码

论坛徽章:
0
6 [报告]
发表于 2009-05-22 17:24 |只看该作者
十分感谢!刚才没有看明白,现在知道了。高手出手,到底不一样!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP