现在有个文件,内容中是sql的插入语句,现在需要将单引号中内容长度超过50个字符的,直接替换成空;
文件内容大概是这样子:
','1','1',NULL,'200000152000779',NULL,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0
,0,0,0,0,NULL,0,0,0,0,0,NULL,0,'',8000.00,500.00,'通过本项目的实施,测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试。\n',0.00,0.00,0.00,0.00,0.00,100.00,300.00,0.00,0.00
,0.00,'/','1、主要研究内容:\n测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试。\n2、拟解决的关键技术问题:\n(
1)载波聚合智能终端载波聚合硬件设计与实现问题;\n(2)测试测试测试测试测试测试测试测试测试测试测试;\n
。\n','',NULL,400.00,0.00,0,0,0,to_date('2017-01-01 00:00
:00','yyyy-MM-dd HH24:MI:SS'),to_date('2018-12-31 00:00:00','yyyy-MM-dd HH24:MI:SS'),to_date('2007-03-11 00:00:00','yyyy-MM-dd HH24:MI:SS'),to_date('2008-03-28 00:00:0
0','yyyy-MM-dd HH24:MI:SS'),to_date('2008-06-05 00:00:00','yyyy-MM-dd HH24:MI:SS'),100.00,'一次性拨款','壹佰万元整',NULL,
然后我用
cat test.txt |awk -F "[,\047\047,]" '{for(i=1;i<=NF;i++){if(length($i)>80){gsub("/[,\047\047,]/","''",i)}}print;}'
或者
cat test.txt |awk -F "[,\047\047,]" '{for(i=1;i<=NF;i++){if(length($i)>80){gsub($i,"''",1)}}print;}'
发现都没有替换;有哪位大神知道怎么处理吗。
|