免费注册 查看新帖 |

Chinaunix

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

vi中替换字符串的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-05 13:27 |只看该作者 |倒序浏览
遇到一个问题,想象中的办法没有解决,所以来请教一下。一个文本文件其中的一列为日期,现在想把这一列的字符替换成'日期'的格式
aaa 2008-07-01 bbb
ccc  2008-07-12 ddd
eee 2008-04-15 eee
希望变成
aaa '2008-07-01' bbb
ccc  '2008-07-12' ddd
eee '2008-04-15' eee
这个可以用正则表达式来替换么?还是需要用别的办法?

[ 本帖最后由 无闻 于 2008-9-5 16:12 编辑 ]

论坛徽章:
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
2 [报告]
发表于 2008-09-05 13:29 |只看该作者

回复 #1 无闻 的帖子

:%s/ \([^ ]\+\) / '\1' /

[ 本帖最后由 blackold 于 2008-9-5 13:31 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-09-05 14:09 |只看该作者
用awk

论坛徽章:
0
4 [报告]
发表于 2008-09-05 14:38 |只看该作者
$ cat cu.080905-03
aaa 2008-07-01 bbb
ccc  2008-07-12 ddd
eee 2008-04-15 eee

$ sed "s/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)/'\1'/g" cu.080905-03
aaa '2008-07-01' bbb
ccc  '2008-07-12' ddd
eee '2008-04-15' eee

论坛徽章:
0
5 [报告]
发表于 2008-09-05 14:53 |只看该作者
补充一个使用vi的方法:
1,$s/\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)/'\1'/g

论坛徽章:
0
6 [报告]
发表于 2008-09-05 14:58 |只看该作者
1,$ s/ /' /g
1,$ s/' / '/

论坛徽章:
0
7 [报告]
发表于 2008-09-05 15:54 |只看该作者
6楼的办法针对我给出的例子是没有问题的,但是如果日期所在的列数是第三列或者更多的时候,就会出现
    ccc 'aaa' 2008-04-12' bbb' fff
      vvv 'aaa' 2008-05-17' ccc' fff
      ggg 'ddd' 2008-09-01' eee' fff
这样的结果了

论坛徽章:
0
8 [报告]
发表于 2008-09-05 15:58 |只看该作者
2L的那个办法没有反映呀,不过我实在把列数增加以后试验的。5L的那个办法确实可以实现,列数不受影响。非常感谢各位的热情帮助。

论坛徽章:
0
9 [报告]
发表于 2008-09-05 16:03 |只看该作者
原帖由 无闻 于 2008-9-5 15:54 发表
6楼的办法针对我给出的例子是没有问题的,但是如果日期所在的列数是第三列或者更多的时候,就会出现
    ccc 'aaa' 2008-04-12' bbb' fff
      vvv 'aaa' 2008-05-17' ccc' fff
      ggg 'ddd' 2008-09-01 ...



呵呵,所以记住,以后一定要如实的描述你的问题。

论坛徽章:
0
10 [报告]
发表于 2008-09-05 16:16 |只看该作者
这个也怪我自己,其实我本来的意思是想说不管这个日期在第几列都可以替换掉的。这个问题解决后我突然想到一个新的问题,能够指定替换那一列的内容么?就是在VI里面。比如是
    ccc aaa 2008-04-12 bbb fff 2008-04-18 fff
      vvv aaa 2008-05-17 ccc fff  2008-09-17 fff
      ggg ddd 2008-09-01 eee fff 2008-05-06 kkk
类似上边的例子
能够指定替换第几列日期的内容么?或者就是说能够随意指定一列中的内容作为目标进行替换么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP