【问题标题】:sed remove last 4 characterssed 删除最后 4 个字符
【发布时间】:2012-09-27 18:03:10
【问题描述】:

假设我有这两行:

blah:20030717.abc
blah:20040714

使用 sed,我如何只匹配行首和行尾 - ^blah.*abc$ - 并删除最后 4 个字符?

我试过了

sed 's/\(^blah.*\)\(.\{4\}$\)/\1/g'

但这也会从另一行中删除 4 个字符。

blah:20030717
blah:2004

sed 's/\(^blah.*abc$\)\(.\{4\}$\)/\1/g'

不会改变任何东西。

【问题讨论】:

  • sed 's/\(^blah.*\)\(\..\{3\}$\)/\1/g' 怎么样?

标签: regex sed


【解决方案1】:

你为什么不这样做

 sed 's/\.abc$//g' 

因为您已经知道要删除哪些 4 个字符?

或者,如果您只想在以blah: 开头的行中执行此操作,

sed 's/^\(blah.*\)\.abc$/\1/g'

或者,如果您的问题是“如果行以 blah: 开头,我如何删除点后的最后三个字符”:

sed 's/^\(blah.*\)\..\{3\}$/\1/g'

【讨论】:

  • 我猜abc只是一个例子。
  • @tim-pietzcker 哇,真快!谢谢。你的第二个例子是完美的sed 's/^\(blah.*\)\.abc$/\1/g',因为我可能还有一行blah:20050723.cba,我想保持原样。
猜你喜欢
  • 2018-06-04
  • 2019-07-05
  • 1970-01-01
  • 2018-09-22
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 2018-11-06
相关资源
最近更新 更多