Chinaunix

标题: [急!]shell处理复杂文本转换? [打印本页]

作者: cuixuezheng    时间: 2009-05-22 16:46
标题: [急!]shell处理复杂文本转换?
将近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 编辑 ]
作者: cuixuezheng    时间: 2009-05-22 17:02
哪位高手能够指导一下?
作者: kwokcn    时间: 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
复制代码

作者: cuixuezheng    时间: 2009-05-22 17:14
谢谢!但是第二列参数的数目是变的,每行数据都是不一样的,如何处理呢?
作者: kwokcn    时间: 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"
复制代码

作者: cuixuezheng    时间: 2009-05-22 17:24
十分感谢!刚才没有看明白,现在知道了。高手出手,到底不一样!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2