sed删除行中多个相同字段

Ramulet 2017-08-17 08:52:06
有个文件file,文件内容如下,

CREATE TABLE bonusinfo (
ID number(11) NOT NULL ,
SENDUSERID number(11) ,
ORGID number(11) ,
TYPE number(2) ,
TOTALNUM number(5) ,
TOTALMONEY number(11,2) ,
SINGLEMONEY number(11,2) ,
remarks varchar2(255) ,
PAYSTYLE number(2) ,
PAYORDERNO varchar2(32) ,
ACTUALPAY number(11,2) ,
ORDERSTATE number(2) ,
DELETEFLAG number(2) ,
CREATETIME date ,
UPDATETIME date ,
PAYTIME date ,
RETURNTIME date ,
SURPLUSMONEY number(11,2) ,
BONUSNO varchar2(32) ,
BONUSINFOSTATE number(2) ,
TN varchar2(64) ,
QN varchar2(64) ,
USERIDS long,
MOBILES long,
ORGIDS long,
NOMOBILES long,
NOORGIDS long,
SNEDCOUNT number(2) ,
NOTSHOWUSERIDS long,
sendUserMobile varchar2(15)
);

INSERT INTO bonusinfo VALUES ('155', '1322', null, '2', '2', '200.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203071213502170', '200.00', '2', '1', to_date('2016-02-03 07:12:13','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:13:11','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:12:26','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203071213502165', '2', 'wx20160203071216a28641d6810853298982', '1004270253201602033061770482', '1322,147724,85705', '18566230840,18501972564,13005221303,', '', null, null, '0', null, '18566230840');
INSERT INTO bonusinfo VALUES ('158', '11326', null, '2', '3', '300.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203072010709938', '300.00', '2', '1', to_date('2016-02-03 07:20:10','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:21:11','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:20:25','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072010709555', '2', 'wx2016020307201222590117350713812158', '1006530253201602033061789875', '11326,454660,2546', '18617163231,18566228870,15219491987,', '', null, null, '0', null, '18617163231');
INSERT INTO bonusinfo VALUES ('161', '454660', null, '2', '1', '1000.00', '0.00', '吃饭睡觉', '1', 'WX20160203072035936415', '1000.00', '2', '1', to_date('2016-02-03 07:20:35','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:20:59','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:20:46','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072035936988', '2', 'wx2016020307203728e84367ac0202349937', '1005280253201602033061794641', '11326,454660,2546', '18617163231,18566228870,15219491987,', '', null, null, '0', null, '15219491987');
INSERT INTO bonusinfo VALUES ('164', '2546', null, '2', '3', '1000.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203072158588549', '1000.00', '2', '1', to_date('2016-02-03 07:21:58','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:22:39','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:22:11','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072158588679', '2', 'wx20160203072200124685902f0583544905', '1010010253201602033059900363', '11326,454660,2546', '18617163231,18566228870,15219491987,', '', null, null, '0', null, '18566228870');
INSERT INTO bonusinfo VALUES ('167', '2546', null, '1', '1', '100.00', '100.00', '恭喜发财,大吉大利!', '1', 'WX20160203072337531977', '100.00', '2', '1', to_date('2016-02-03 07:23:37','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:24:04','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:23:51','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072337531869', '2', 'wx20160203072342530cab947e0688696979', '1010010253201602033061791985', '454660', '15219491987,', '', null, null, '0', null, '18566228870');
INSERT INTO bonusinfo VALUES ('170', '454660', null, '2', '2', '300.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203072503218998', '300.00', '2', '1', to_date('2016-02-03 07:25:03','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:25:49','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:25:40','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072503218489', '2', 'wx2016020307250533fabe996f0266289668', '1005280253201602033059922012', '454660,2546', '18566228870,15219491987,', '', null, null, '0', null, '15219491987');
INSERT INTO bonusinfo VALUES ('173', '2546', null, '2', '2', '500.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203072529435469', '500.00', '2', '1', to_date('2016-02-03 07:25:29','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:25:56','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:25:40','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072529435500', '2', 'wx201602030725319ffbbe243c0332934972', '1010010253201602033059919860', '454660,2546', '15219491987,18566228870,', '', null, null, '0', null, '18566228870');
INSERT INTO bonusinfo VALUES ('176', '59', null, '2', '2', '300.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203072807384486', '300.00', '2', '1', to_date('2016-02-03 07:28:07','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:29:57','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:28:32','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072807384621', '2', 'wx20160203072809c5095842e90662931854', '1005770253201602033059917159', '1322,1498990', '18566230840,13058038565,', '', null, null, '0', null, '15101642494');
INSERT INTO bonusinfo VALUES ('179', '195841', null, '2', '2', '200.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203072818611703', '200.00', '2', '1', to_date('2016-02-03 07:28:18','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:30:16','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:28:37','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203072818611578', '2', 'wx201602030728207a2b0de8890854165257', '1007050253201602033061814639', '403,111', '13480986180,13410864329,', '', null, null, '0', null, '18923831340');
INSERT INTO bonusinfo VALUES ('182', '403', null, '2', '3', '500.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203073002277883', '500.00', '2', '1', to_date('2016-02-03 07:30:02','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:30:34','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:30:20','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203073002277912', '2', 'wx201602030730049982147c130633805796', '1008030253201602033059936421', '195841,403,111', '18923831340,13480986180,13410864329,', '', null, null, '0', null, '13480986180');
INSERT INTO bonusinfo VALUES ('185', '2546', null, '2', '3', '300.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203073046053457', '300.00', '1', '1', to_date('2016-02-03 07:30:46','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:30:47','yyyy-mm-dd hh24:mi:ss'), null, null, '300.00', 'HB20160203073046053417', '1', 'wx20160203073048e987a47cc60486472829', null, '277594,454660,2546', '15219491987,18566228870,13511111111,', '', null, null, '0', null, '18566228870');
INSERT INTO bonusinfo VALUES ('188', '454660', null, '1', '2', '200.00', '100.00', '15219491987', '1', 'WX20160203073113584332', '200.00', '3', '1', to_date('2016-02-03 07:31:13','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-04 02:00:35','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:31:23','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-04 02:00:35','yyyy-mm-dd hh24:mi:ss'), '200.00', 'HB20160203073113584450', '3', 'wx20160203073115845bb1f2530999235474', '1005280253201602033061815321', '454660', '15219491987,15219491987,', '', null, null, '0', null, '15219491987');
INSERT INTO bonusinfo VALUES ('191', '2546', null, '2', '1', '100.00', '0.00', '恭喜发财,大吉大利!', '1', 'WX20160203073129901159', '100.00', '2', '1', to_date('2016-02-03 07:31:29','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:31:48','yyyy-mm-dd hh24:mi:ss'), to_date('2016-02-03 07:31:40','yyyy-mm-dd hh24:mi:ss'), null, '0.00', 'HB20160203073129901703', '2', 'wx201602030731311451fe61b60185849180', '1010010253201602033061814556', '274852,454660', '15219491987,13111111111,', '', null, null, '0', null, '18566228870');
CREATE TABLE bonusreturnorder (
ID number(11) NOT NULL ,
BONUSINFOID number(11) ,
SENDUSERID number(11) ,
RETORDERSTATE number(2) ,

一看就是Oracle的插入脚本(还有其他数据,大小7G),但是同一个表内不能有多个long字段,所以想把insert行中的long字段只保留一个,其他的都删除,即每个insert语句都截止到红色的字段部分,红色部分到后面括号里的内容全删除。
本人百思不得姐,求教哪位大神给个答案。最好“代码誉写工” 大牛看到。上一次就是他帮我解决了一个难度更大的问题。

...全文
538 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ramulet 2018-09-01
  • 打赏
  • 举报
回复
详细点,我的需求是:
1 7G的文件里,sql语句的格式是完全严格的,我是从mysql里导出来的;
2 删除每个create语句包含long字符串的行,删除所有对应的要插入表的insert语句的long字段对应的value值
3 不仅仅有上面说的那个数据库表
代码誊写工 2017-08-23
  • 打赏
  • 举报
回复
而且VALUES (之后的字符串必须正好是第31个
代码誊写工 2017-08-23
  • 打赏
  • 举报
回复
哪位Python “高手” 写的这破玩意?
引用 5 楼 xpresslink 的回复:

# /usr/bin/env python
# -*- coding:utf-8 -*-  

source_file = open('source.sql', 'r')
output_file = open('output.sql', 'w')

LINE_HEADER = 'INSERT INTO bonusinfo VALUES ('

for line in source_file:
    if line.startswith(LINE_HEADER):
        values_list = line[30:].split(', ')
        pos = filter(lambda x:x[1].startswith("'wx2"), enumerate(values_list))[0][0] + 2
        values_list = values_list[:pos]
        sql = LINE_HEADER + ','.join(values_list) + ');\n'
        output_file.write(sql)
        print sql
    else:
        output_file.write(line)

output_file.close()    
source_file.close()
这个倒好,完全按字符的位置来计算,也就是sql脚本格式不能有一丁点格式不规范, 不能在inset into前有空格,“INSERT INTO bonusinfo VALUES”不能大小写随意,必须有"'wx2"打头的字段值,每个字段值不能含有‘,’号(否则会被split),表名必须叫“ bonusinfo ”叫别的都不会被处理。
代码誊写工 2017-08-23
  • 打赏
  • 举报
回复
引用 8 楼 xpresslink 的回复:
Talk is cheap. Show me the code!」
我不是针对你,我说得包括我自己在内的所有中国IT从业人员
代码誊写工 2017-08-23
  • 打赏
  • 举报
回复
引用 8 楼 xpresslink 的回复:
谢谢您的指教,因为时间有限得到的需求信息有限,我就花几分钟写了一个脚本,能满足样例的转换,只是提供一种方案,肯定不完善。 (1)不能在inset into前有空格,“INSERT INTO bonusinfo VALUES”不能大小写随意:这种dump出来SQL文件一般大小写和格式都是稳定的,满足要求就够了。而且这个可以调整成更模糊识别方法,只是对效率有影响,没有必要这么做。 (2)字段值含有‘,’号,会被split:是这没错的,但是不影响结果,算法中考虑这个因素了,会原样拼接回来的。 (3)表名必须叫“ bonusinfo ”叫别的都不会被处理:这是肯定的,因为需求就是要处理对这个表的插入语句啊。 (4)必须有"'wx2"打头的字段值:是的,用这个特征来识别要截取到的字段。因为values中的唯一可利用的分隔符‘, ’在函数中或数据字段中也出现了,所以split出来的字段数是不固定的,而且是不完全正确的,最终必须要原样拼接回去。由于我对整个数据信息了解的有限,从样例数据看就是这么一个共同特征,如果有额外的信息的可使用的话可以调整一下识别方法,这个需要楼主进一步的反馈。 总之,从样例数据看,values中的数据的表示法的一致性比较差,有空串‘’,有null,有函数引用等比较复杂,总的来说要想很好的截取字段要写个SQL解析器才能做到完美。 这个技术我能做到,但是代价太大,我不能凭白无故花两天时间吧。 「Talk is cheap. Show me the code!」
嗯,不好意思,我以为是从网上抄来的,说得有点儿生硬。别说啥指教,只是要么不回答,要么就负责些 (坦白说我还是认为,咱们中国IT从业者最顶级技术人员的也就是个初级抄写员,咱就别叫啥技术,就是照着手册操作外国人(包括小日本)发明的东西。咱们这个民族虽然几千年来已经不要脸惯了,但现代生活现代科技和咱们没啥关系,只要是自动化的、化学的、电、逻辑的一定不是咱们创造的,充其量就是拼装和使用,大家都是自己族的,知根知底,别大牛,大神,高手。) 按你那个处理逻辑用bsh就能搞定,用不着python。
#!/bin/bash
IFS=$'\n'
LINE_HEADER="INSERT INTO bonusinfo VALUES ("
for line in $(cat file); do
    [[ "$line" =~ ^INSERT\ INTO\ bonusinfo\ VALUES\ \( ]] && \
    {
        IFS=','
        value_list=(${line:30})
        IFS=$'\n'
        LEN=${#value_list[@]}
        SQL=""
        for ((i=0; i < LEN; i++)); do
                [[ "${value_list[i]}" =~ \'wx20 ]] && \
                {
                    SQL="$SQL${value_list[i]},${value_list[((i+1))]}"
                    break

                } || \
                SQL="${SQL}${value_list[i]},"
         done
         echo "${LINE_HEADER}${SQL});" >> dest.sql
     } || \
     echo ${line} >> dest.sql
done
用sed就更简单:
sed "/INSERT INTO bonusinfo/{s/\(^.*'wx20[^,]*\s*,[^,]*\)\s*,.*/\1);/p}"file
但其实并没有解决问题。 看楼主的SQL文件,肯定不止一个表要处理
引用 1 楼 u012312884 的回复:
CREATE TABLE bonusreturnorder ( ID number(11) NOT NULL , BONUSINFOID number(11) , SENDUSERID number(11) , RETORDERSTATE number(2) ,
SQL脚本肯定也要处理CREATE语句,否则CREATE的时候就错了 做sql parser谈不上技术,咱们老老实实跟着洋人屁股后面认真操作这种就别叫技术了。
混沌鳄鱼 2017-08-23
  • 打赏
  • 举报
回复
引用 6 楼 prolee750607 的回复:
哪位Python “高手” 写的这破玩意?[quote=引用 5 楼 xpresslink 的回复:]

# /usr/bin/env python
# -*- coding:utf-8 -*-  

source_file = open('source.sql', 'r')
output_file = open('output.sql', 'w')

LINE_HEADER = 'INSERT INTO bonusinfo VALUES ('

for line in source_file:
    if line.startswith(LINE_HEADER):
        values_list = line[30:].split(', ')
        pos = filter(lambda x:x[1].startswith("'wx2"), enumerate(values_list))[0][0] + 2
        values_list = values_list[:pos]
        sql = LINE_HEADER + ','.join(values_list) + ');\n'
        output_file.write(sql)
        print sql
    else:
        output_file.write(line)

output_file.close()    
source_file.close()
这个倒好,完全按字符的位置来计算,也就是sql脚本格式不能有一丁点格式不规范, 不能在inset into前有空格,“INSERT INTO bonusinfo VALUES”不能大小写随意,必须有"'wx2"打头的字段值,每个字段值不能含有‘,’号(否则会被split),表名必须叫“ bonusinfo ”叫别的都不会被处理。[/quote] 谢谢您的指教,因为时间有限得到的需求信息有限,我就花几分钟写了一个脚本,能满足样例的转换,只是提供一种方案,肯定不完善。 (1)不能在inset into前有空格,“INSERT INTO bonusinfo VALUES”不能大小写随意:这种dump出来SQL文件一般大小写和格式都是稳定的,满足要求就够了。而且这个可以调整成更模糊识别方法,只是对效率有影响,没有必要这么做。 (2)字段值含有‘,’号,会被split:是这没错的,但是不影响结果,算法中考虑这个因素了,会原样拼接回来的。 (3)表名必须叫“ bonusinfo ”叫别的都不会被处理:这是肯定的,因为需求就是要处理对这个表的插入语句啊。 (4)必须有"'wx2"打头的字段值:是的,用这个特征来识别要截取到的字段。因为values中的唯一可利用的分隔符‘, ’在函数中或数据字段中也出现了,所以split出来的字段数是不固定的,而且是不完全正确的,最终必须要原样拼接回去。由于我对整个数据信息了解的有限,从样例数据看就是这么一个共同特征,如果有额外的信息的可使用的话可以调整一下识别方法,这个需要楼主进一步的反馈。 总之,从样例数据看,values中的数据的表示法的一致性比较差,有空串‘’,有null,有函数引用等比较复杂,总的来说要想很好的截取字段要写个SQL解析器才能做到完美。 这个技术我能做到,但是代价太大,我不能凭白无故花两天时间吧。 「Talk is cheap. Show me the code!」
混沌鳄鱼 2017-08-22
  • 打赏
  • 举报
回复
你这个需求用sed是实现不了的。因为那个values里面的字段值完全没有一致性,用正则识别不了。 算你走运Python高手恰好路过。 只能用脚本逐行处理了,好在文件也不是太大。在SSD上跑估计用不了几分钟。 把下面这段代码存到一个utf-8编码,Unix格式换行的文本文件里,名字叫 handle_sql.py ,其实随便什么都无所谓。 然后放到要处理的SQL文件相同目录下,在命令行执行 # python handle_sql.py

# /usr/bin/env python
# -*- coding:utf-8 -*-  

source_file = open('source.sql', 'r')
output_file = open('output.sql', 'w')

LINE_HEADER = 'INSERT INTO bonusinfo VALUES ('

for line in source_file:
    if line.startswith(LINE_HEADER):
        values_list = line[30:].split(', ')
        pos = filter(lambda x:x[1].startswith("'wx2"), enumerate(values_list))[0][0] + 2
        values_list = values_list[:pos]
        sql = LINE_HEADER + ','.join(values_list) + ');\n'
        output_file.write(sql)
        print sql
    else:
        output_file.write(line)

output_file.close()    
source_file.close()
结果大概是这样的 。。。。。。。 INSERT INTO bonusinfo VALUES ('155','1322',null,'2','2','200.00','0.00','恭喜发财,大吉大利!','1','WX20160203071213502170','200.00','2','1',to_date('2016-02-03 07:12:13','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:13:11','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:12:26','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203071213502165','2','wx20160203071216a28641d6810853298982','1004270253201602033061770482'); INSERT INTO bonusinfo VALUES ('158','11326',null,'2','3','300.00','0.00','恭喜发财,大吉大利!','1','WX20160203072010709938','300.00','2','1',to_date('2016-02-03 07:20:10','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:21:11','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:20:25','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072010709555','2','wx2016020307201222590117350713812158','1006530253201602033061789875'); INSERT INTO bonusinfo VALUES ('161','454660',null,'2','1','1000.00','0.00','吃饭睡觉','1','WX20160203072035936415','1000.00','2','1',to_date('2016-02-03 07:20:35','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:20:59','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:20:46','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072035936988','2','wx2016020307203728e84367ac0202349937','1005280253201602033061794641'); INSERT INTO bonusinfo VALUES ('164','2546',null,'2','3','1000.00','0.00','恭喜发财,大吉大利!','1','WX20160203072158588549','1000.00','2','1',to_date('2016-02-03 07:21:58','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:22:39','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:22:11','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072158588679','2','wx20160203072200124685902f0583544905','1010010253201602033059900363'); INSERT INTO bonusinfo VALUES ('167','2546',null,'1','1','100.00','100.00','恭喜发财,大吉大利!','1','WX20160203072337531977','100.00','2','1',to_date('2016-02-03 07:23:37','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:24:04','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:23:51','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072337531869','2','wx20160203072342530cab947e0688696979','1010010253201602033061791985'); INSERT INTO bonusinfo VALUES ('170','454660',null,'2','2','300.00','0.00','恭喜发财,大吉大利!','1','WX20160203072503218998','300.00','2','1',to_date('2016-02-03 07:25:03','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:25:49','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:25:40','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072503218489','2','wx2016020307250533fabe996f0266289668','1005280253201602033059922012'); INSERT INTO bonusinfo VALUES ('173','2546',null,'2','2','500.00','0.00','恭喜发财,大吉大利!','1','WX20160203072529435469','500.00','2','1',to_date('2016-02-03 07:25:29','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:25:56','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:25:40','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072529435500','2','wx201602030725319ffbbe243c0332934972','1010010253201602033059919860'); INSERT INTO bonusinfo VALUES ('176','59',null,'2','2','300.00','0.00','恭喜发财,大吉大利!','1','WX20160203072807384486','300.00','2','1',to_date('2016-02-03 07:28:07','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:29:57','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:28:32','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072807384621','2','wx20160203072809c5095842e90662931854','1005770253201602033059917159'); INSERT INTO bonusinfo VALUES ('179','195841',null,'2','2','200.00','0.00','恭喜发财,大吉大利!','1','WX20160203072818611703','200.00','2','1',to_date('2016-02-03 07:28:18','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:30:16','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:28:37','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203072818611578','2','wx201602030728207a2b0de8890854165257','1007050253201602033061814639'); INSERT INTO bonusinfo VALUES ('182','403',null,'2','3','500.00','0.00','恭喜发财,大吉大利!','1','WX20160203073002277883','500.00','2','1',to_date('2016-02-03 07:30:02','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:30:34','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:30:20','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203073002277912','2','wx201602030730049982147c130633805796','1008030253201602033059936421'); INSERT INTO bonusinfo VALUES ('185','2546',null,'2','3','300.00','0.00','恭喜发财,大吉大利!','1','WX20160203073046053457','300.00','1','1',to_date('2016-02-03 07:30:46','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:30:47','yyyy-mm-dd hh24:mi:ss'),null,null,'300.00','HB20160203073046053417','1','wx20160203073048e987a47cc60486472829',null); INSERT INTO bonusinfo VALUES ('188','454660',null,'1','2','200.00','100.00','15219491987','1','WX20160203073113584332','200.00','3','1',to_date('2016-02-03 07:31:13','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-04 02:00:35','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:31:23','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-04 02:00:35','yyyy-mm-dd hh24:mi:ss'),'200.00','HB20160203073113584450','3','wx20160203073115845bb1f2530999235474','1005280253201602033061815321'); INSERT INTO bonusinfo VALUES ('191','2546',null,'2','1','100.00','0.00','恭喜发财,大吉大利!','1','WX20160203073129901159','100.00','2','1',to_date('2016-02-03 07:31:29','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:31:48','yyyy-mm-dd hh24:mi:ss'),to_date('2016-02-03 07:31:40','yyyy-mm-dd hh24:mi:ss'),null,'0.00','HB20160203073129901703','2','wx201602030731311451fe61b60185849180','1010010253201602033061814556'); 。。。。。。。
Insane_linux 2017-08-22
  • 打赏
  • 举报
回复
引用 3 楼 u012312884 的回复:
@prolee750607 , 简单来说 [quote=引用 1 楼 prolee750607 的回复:]
引用
一看就是Oracle的插入脚本(还有其他数据,大小7G),但是同一个表内不能有多个long字段,所以想把insert行中的long字段只保留一个,其他的都删除,即每个insert语句都截止到红色的字段部分,红色部分到后面括号里的内容全删除。
老实说,需求我没看懂。 1.insert里的用什么模式判断long字段?是通过内容,还是要通过create部分判断long字段的位置,然后再跳到insert里判断? 2.是去掉多个long,只留下一个,还是第一个long后所有字段都删除 sed的正则对嵌套括号、嵌套引号的判断是很麻烦的,不支持断言,回溯、递归等复杂匹配,所以一旦要匹配这种 "a, '1,2,3','(a,(b,c,('a,b,c',(c,'a,b')))), 1, 2', c, d",间隔用逗号,表达式里也有逗号,而且表达式多重嵌套是几乎搞不定的 所以shell “=~”、grep、sed、awk这些仅仅用来匹配相对简单的文本,复杂的还是要用perl、python 上一个需求很明确,所有pattern写起来比这个容易。
引用 2 楼 kairui123 的回复:
sed -i "s/^\..long.*\.$/" "/2g" file
兄弟, 你的代码没跑过吧, 报错了。[/quote] 没有啊!!就是那个意思,让你改一改
Ramulet 2017-08-22
  • 打赏
  • 举报
回复
@prolee750607 , 简单来说
引用 1 楼 prolee750607 的回复:
引用
一看就是Oracle的插入脚本(还有其他数据,大小7G),但是同一个表内不能有多个long字段,所以想把insert行中的long字段只保留一个,其他的都删除,即每个insert语句都截止到红色的字段部分,红色部分到后面括号里的内容全删除。
老实说,需求我没看懂。 1.insert里的用什么模式判断long字段?是通过内容,还是要通过create部分判断long字段的位置,然后再跳到insert里判断? 2.是去掉多个long,只留下一个,还是第一个long后所有字段都删除 sed的正则对嵌套括号、嵌套引号的判断是很麻烦的,不支持断言,回溯、递归等复杂匹配,所以一旦要匹配这种 "a, '1,2,3','(a,(b,c,('a,b,c',(c,'a,b')))), 1, 2', c, d",间隔用逗号,表达式里也有逗号,而且表达式多重嵌套是几乎搞不定的 所以shell “=~”、grep、sed、awk这些仅仅用来匹配相对简单的文本,复杂的还是要用perl、python 上一个需求很明确,所有pattern写起来比这个容易。
引用 2 楼 kairui123 的回复:
sed -i "s/^\..long.*\.$/" "/2g" file
兄弟, 你的代码没跑过吧, 报错了。
Insane_linux 2017-08-22
  • 打赏
  • 举报
回复
sed -i "s/^\..long.*\.$/" "/2g" file
代码誊写工 2017-08-19
  • 打赏
  • 举报
回复
引用
一看就是Oracle的插入脚本(还有其他数据,大小7G),但是同一个表内不能有多个long字段,所以想把insert行中的long字段只保留一个,其他的都删除,即每个insert语句都截止到红色的字段部分,红色部分到后面括号里的内容全删除。
老实说,需求我没看懂。 1.insert里的用什么模式判断long字段?是通过内容,还是要通过create部分判断long字段的位置,然后再跳到insert里判断? 2.是去掉多个long,只留下一个,还是第一个long后所有字段都删除 sed的正则对嵌套括号、嵌套引号的判断是很麻烦的,不支持断言,回溯、递归等复杂匹配,所以一旦要匹配这种 "a, '1,2,3','(a,(b,c,('a,b,c',(c,'a,b')))), 1, 2', c, d",间隔用逗号,表达式里也有逗号,而且表达式多重嵌套是几乎搞不定的 所以shell “=~”、grep、sed、awk这些仅仅用来匹配相对简单的文本,复杂的还是要用perl、python 上一个需求很明确,所有pattern写起来比这个容易。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧