免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4759 | 回复: 7
打印 上一主题 下一主题

去掉文件中最后一个逗号 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-23 17:20 |只看该作者 |倒序浏览
打个比方说,
我的文件为
create table A
(
   a1 int,
   a2 char(2),
   a3 char(5),
)
我想把a3那一行的逗号去掉,怎么做,大家帮我看下吧

ps 我的文件的行数不确定,可能有3行,也可能有30行,我的目的是把最后一个逗号去掉,使我的建表语句不报错,咋办?
我的列名也不确定,我这里a1 a2 a3只是打个比方
还有就是最后一行不一定只有一个逗号,也可能是a3 decimal(24,6), 这样。

[ 本帖最后由 testtest11 于 2009-3-23 17:26 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-23 17:23 |只看该作者
sed '/a3/s/,$//' file

论坛徽章:
0
3 [报告]
发表于 2009-03-23 17:43 |只看该作者
  1. [root@Mylinux tmp]# cat file
  2. create table A
  3. (
  4.    a1 int,
  5.    a2 char(2),
  6.    a3 decimal(24,6),
  7. )
  8. [root@Mylinux tmp]# awk '{a[NR]=$0}END{for (i=NR;i>=1;i--) if (a[i]~/,/) {a[i]=gensub(/(.*),/,"\\1",1,a[i]);break}for (i=1;i<=NR;i++) print a[i]}' file
  9. create table A
  10. (
  11.    a1 int,
  12.    a2 char(2),
  13.    a3 decimal(24,6)
  14. )
复制代码

论坛徽章:
0
4 [报告]
发表于 2009-03-23 17:46 |只看该作者

回复 #1 testtest11 的帖子

sed '{:a;s/,\n)/\n)/;N;ba}'   urfile

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
5 [报告]
发表于 2009-03-23 17:49 |只看该作者

回复 #1 testtest11 的帖子

try:
  1. $ ed urfile >&/dev/null <<END
  2. ?,?
  3. s/,\([^,]*\)$/\1/
  4. w
  5. q
  6. END
复制代码

论坛徽章:
0
6 [报告]
发表于 2009-03-23 17:52 |只看该作者
sed -r '/a3/s/(.*),/\1/'

[ 本帖最后由 justlooks 于 2009-3-23 17:57 编辑 ]

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
7 [报告]
发表于 2009-03-24 00:45 |只看该作者

  1. sed '/,$/{N;s/,\n)/\n)/;}' ufile
复制代码


若考虑到有空格的情况.

  1. sed '/, *$/{N;s/, *\n *)/\n)/;}' ufile
复制代码

论坛徽章:
0
8 [报告]
发表于 2009-03-24 09:29 |只看该作者
原帖由 liaosnet 于 2009-3-24 00:45 发表

sed '/,$/{N;s/,\n)/\n)/;}' ufile


若考虑到有空格的情况.

sed '/, *$/{N;s/, *\n *)/\n)/;}' ufile


这个实用!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP