Chinaunix

标题: 请教一下文本处理,谢谢! [打印本页]

作者: will009    时间: 2016-03-29 10:30
标题: 请教一下文本处理,谢谢!
现在有个大约11G的文件,如下面格式:
insert into table values (a),(b),(c),(d),......(z);

想改成下面格式:
insert into table[字段名] values (a);
insert into table[字段名] values (b);
insert into table[字段名] values (c);
insert into table[字段名] values (d);
...
insert into table[字段名] values (z);

请教一下大师,谢谢了!
作者: WilliBhamlll    时间: 2016-03-29 11:17
本帖最后由 WilliBhamlll 于 2016-03-29 11:28 编辑
  1. echo 'insert into table values (a),(b),(c),(d),(e),(f);'|sed -r 's/table/&[字段名]/;:1;s/([^(,]*)*([^,]*),(.*)(;)/\1\2\4\n\1\3\4/;t1'
  2. insert into table[字段名] values (a);
  3. insert into table[字段名] values (b);
  4. insert into table[字段名] values (c);
  5. insert into table[字段名] values (d);
  6. insert into table[字段名] values (e);
  7. insert into table[字段名] values (f);
复制代码
11G,够呛。。
作者: leijskg    时间: 2016-03-29 11:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 我是一隻羊    时间: 2016-03-29 11:59
  1. sed 's/table/&[字段名]/;s/,/;\ninsert into table[字段名] values /g' file
复制代码

作者: moperyblue    时间: 2016-03-29 12:20
本帖最后由 moperyblue 于 2016-03-29 13:55 编辑
  1. sed -r 's/e/&[字段名]/2;:a;s/(.*values )([^,]*),/\1\2;\n\1/M;ta'
  2. sed -n 's/e/&[字段名]/2;h;s/\(.*values \).*/\1/;x;s/.*values //;:a;G;s/\(.*\)\n\(.*\)/\2\1/;/,/!{p;b};s/,/;\n/;P;s/.*\n//;ta'
复制代码

作者: liion631818    时间: 2016-03-29 12:37
WilliBhamlll 发表于 2016-03-29 11:17
11G,够呛。。


m 好东西
作者: jason680    时间: 2016-03-29 13:14
回复 1# will009

$ awk '/insert into table values/{$3=$3"[字段名]";sub(/;$/,"");t=split($5,a,",");for(n=1;n<=t;++n)print $1,$2,$3,$4,a[n]";"}' FILE
insert into table[字段名] values (a);
insert into table[字段名] values (b);
insert into table[字段名] values (c);
...
insert into table[字段名] values (z);

   
作者: toddhai    时间: 2016-05-05 16:06
本帖最后由 toddhai 于 2016-05-05 16:09 编辑
  1. awk -F'[ ,;]' '{for(i=5;i<NF;i++)print "insert into table[字段名] values "$i";"}' urfile
复制代码





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