【问题标题】:Unix pattern matching using vim使用 vim 进行 Unix 模式匹配
【发布时间】:2013-04-26 20:42:10
【问题描述】:

处理具有类似模式的随机文件

Jon Smith-db/his-wife.db/his-keeds.db
Jon Smith-db/his-wife.db/his-siblings/his-k1ds.db
....
....

我需要将最后一个字符串 his-keeds.db 和类似的拼写错误替换为空白,所以我的尝试是

:1,$s/\/.+\.db$//g

但不起作用。我可以使用 awk 和 perl 做到这一点,但在 vim 内置编辑器中失败了。有人可以帮忙吗?

【问题讨论】:

  • 什么是and similar typos?

标签: regex unix vim


【解决方案1】:

这样就可以了:

:%s#/[^/]*\.db$#/#

如果你不想要结尾的斜线:

:%s#/[^/]*\.db$##

【讨论】:

  • 谢谢肯特。 s(替换)之后的第一个“#”是什么?
  • # 可以是任何单个字符,例如@, ; ...我使用它是因为我不必逃避斜线。
  • @CuriousMind 谢谢。你的也很接近。您只是忽略了贪婪的.+ 将. 更改为[^/] 也可以。 (不需要g,因为你有$ 模式)
【解决方案2】:

试试

:g/his-keeds.db$/s///g

改为

【讨论】:

  • Marc - his-keeds.db 可以是任何东西,整个文件有错别字,所以它也可以是 'his-keeeeeeds.db' 或 'his-k1234ds.db'。否则,它会很简单。
  • 然后尝试逆正则表达式。任何非 his-kids.db
  • 除了要求。这两个g(:g 和/g)不是必需的。只是:%s/his-keeds.db$//。但替换不会因他们而失败
猜你喜欢
  • 2016-04-29
  • 2013-02-27
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多