免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3565 | 回复: 8

请教一个删除匹配行和前一行的最后一个字符的问题。 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 10:00 |显示全部楼层
文件示例如下,

...
        default current year to second,
    primary key (handlercode)
...

文件里有很多上面的内容,想删除primary key那一行和前一行的逗号,请高手们指点下!谢谢!

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 10:51 |显示全部楼层
大家看懂了木有呀?

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
发表于 2011-10-14 11:00 |显示全部楼层
本帖最后由 rdcwayx 于 2011-10-14 11:05 编辑
  1. awk 'NR==FNR{if ($0~/primary key/) a[FNR];next}
  2.        (FNR+1) in a {gsub(/,/,"",$0)} FNR in a{next}1' infile infile
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2011-10-14 11:18 |显示全部楼层

  1. sed '$!N;s/,\([^,]*\n.*primary key (handlercode)\)/\1/;P;D' urfile
复制代码

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 11:27 |显示全部楼层


  1. echo 'create raw table "picccar".prplafterward
  2. >   (
  3. >     id decimal(19,0) not null ,
  4. >     claimno char(22) not null ,
  5. >     kindcode char(6),
  6. >     chargecode char(3),
  7. >     chargename char(16),
  8. >     currency char(3),
  9. >     chargeamount decimal(14,2),
  10. >     sumrealpay decimal(14,2),
  11. >     dealdate datetime year to second,
  12. >     flag char(10),
  13. >     remark varchar(255),
  14. >     validflag char(1) not null ,
  15. >     inserttimeforhis datetime year to second
  16. >         default current year to second,
  17. >     operatetimeforhis datetime year to second
  18. >         default current year to second,
  19. >     primary key (id)
  20. >   ) extent size 16 next size 16 lock mode row;
  21. > '|sed '$!N;s/,\([^,]*\n.*primary key (handlercode)\)/\1/;P;D'
  22. create raw table "picccar".prplafterward
  23.   (
  24.     id decimal(19,0) not null ,
  25.     claimno char(22) not null ,
  26.     kindcode char(6),
  27.     chargecode char(3),
  28.     chargename char(16),
  29.     currency char(3),
  30.     chargeamount decimal(14,2),
  31.     sumrealpay decimal(14,2),
  32.     dealdate datetime year to second,
  33.     flag char(10),
  34.     remark varchar(255),
  35.     validflag char(1) not null ,
  36.     inserttimeforhis datetime year to second
  37.         default current year to second,
  38.     operatetimeforhis datetime year to second
  39.         default current year to second,
  40.     primary key (id)
  41.   ) extent size 16 next size 16 lock mode row;
复制代码

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 11:28 |显示全部楼层

  1. echo 'create raw table "picccar".prplafterward
  2. >   (
  3. >     id decimal(19,0) not null ,
  4. >     claimno char(22) not null ,
  5. >     kindcode char(6),
  6. >     chargecode char(3),
  7. >     chargename char(16),
  8. >     currency char(3),
  9. >     chargeamount decimal(14,2),
  10. >     sumrealpay decimal(14,2),
  11. >     dealdate datetime year to second,
  12. >     flag char(10),
  13. >     remark varchar(255),
  14. >     validflag char(1) not null ,
  15. >     inserttimeforhis datetime year to second
  16. >         default current year to second,
  17. >     operatetimeforhis datetime year to second
  18. >         default current year to second,
  19. >     primary key (id)
  20. >   ) extent size 16 next size 16 lock mode row;
  21. > '|awk 'NR==FNR{if ($0~/primary key/) a[FNR];next} (FNR+1) in a {gsub(/,/,"",$0)} FNR in a{next}1'
复制代码
这个没有输出结果!

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 11:29
$uname -a
HP-UX server_c B.11.31 U ia64 4274117928 不限用户数的许可证

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 11:38 |显示全部楼层
只匹配primary key就可以了,要把primary key这一行和上一行最后一个都好全部去掉!

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
发表于 2011-10-14 11:42 |显示全部楼层
回复 4# waker


    在linux上试了一下,这个可以去掉前一行的逗号,但不能删除primary key那一行,自己又用grep -v处理了一下,可以了!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP