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、"ab","2|c=1|d=3|";
awk -F"[,\"]" '{printf "\""$2"\",\""$5; for(i=1;i<=$5;i++) printf "\174"$(5+i)"="$(5+i+$5); print "\";"}' URFILE
2、"ab","c","1"
"ab","d","3"
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
参数变了有影响吗?
[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)"\""}'
"ab","c","1"
"ab","d","3"
"ab","e","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 "\""}'
"ab","3|c=1|d=3|e=5"
复制代码
作者:
cuixuezheng
时间:
2009-05-22 17:24
十分感谢!刚才没有看明白,现在知道了。高手出手,到底不一样!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2