【问题标题】:How to change date format in text file linux/unix如何更改文本文件 linux/unix 中的日期格式
【发布时间】:2016-09-28 03:06:44
【问题描述】:

以下是文本文件 myfile.txt

7022122465,0,0,day,2015-09-29 10:48:33
7022597642,0,0,day,2015-09-29 10:48:33
7022848906,0,0,day,2015-09-29 10:48:33
7022191546,0,0,day,2015-09-29 10:48:33
7022180761,0,0,day,2015-09-29 10:48:33
7022125589,0,0,day,2015-09-29 10:48:33
7022224472,0,0,day,2015-09-29 10:48:33

我想使用正则表达式将最后一列日期格式从 2015-09-29 更改为 2015:09:29,请帮助我。

我试过这样但是替换正则表达式(我是 linux 的初学者)

sed -r  's/([0-9]{4}-[0-9]{2}-[0-9]{2})/([0-9]{2}:[0-9]{2}:[0-9]{2})/g' myfile.txt

【问题讨论】:

  • @narasimharao - 请确认您是否将始终以这种格式获取数据。如果您在其他任何地方收到- 怎么办?你确定它永远不会发生吗?

标签: regex linux date unix sed


【解决方案1】:

你可以用这个

sed -r 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\1:\2:\3/g' myfile.txt

() 正在捕获组。使用捕获组匹配的任何结果都将被存储,并且可以在替换期间使用\1\2 等进行反向引用。

([0-9]{4})-([0-9]{2})-([0-9]{2})
<--------> <--------> <-------->
1st group  2nd group  3rd group

【讨论】:

  • 我最喜欢您的解决方案,因为它允许我更改日期的顺序。
【解决方案2】:

而不是分组,你应该尝试:

sed 's/-/:/g' myfile.txt

如果您想就地编辑文件,请使用 i 选项,例如:sed -i 's/-/:/g' myfile.txt

【讨论】:

  • 如果您只想用: 替换- 更好的选择,这是OP 首先想要的。
  • 显然这就是 OP 的要求
  • 没有理由逃避-:,就用's/-/:/g'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多