使用sed更改时间格式

时间:2014-10-06 14:00:30

标签: unix time sed

我遇到了一些我需要以糟糕的时间格式导入我的数据库的文件

A09:13:08C

甚至不确定它代表什么 有没有快速的方法使用sed来替换空格中的'A'并删除'C'?

4 个答案:

答案 0 :(得分:2)

sed -r 's/A(.*)C/ \1/' filename

只需保存 A C 之间的所有字词,然后将其与 \ 1

一起使用

更谨慎的判决是:

sed -r 's/A([0-9:]+)C/ \1/'

答案 1 :(得分:1)

据推测,该行还有其他数据,因此使用随意的.*可能会破坏事物。我使用的是一种相当冗长但限制性的模式:

sed -e 's/A\([012][0-9]:[0-5][0-9]:[0-5][0-9]\)C/ \1/'

这将查找A后跟24小时时钟时间值和C,保留时间部分。它会接受一些无效的时间(25-29作为小时;实际上,24:00:01通常也不是有效的,但可以是24:00:00);你的判断是否值得改进这些模式(坦率地说,我怀疑它,但这取决于你对数据的了解程度)。

答案 2 :(得分:0)

如果这是文件中的所有内容,那么

grep -o '[^AC]\+' file

如果还有其他字段,我会使用(g)awk。
其中N是场。

awk '{match($1,/([^AC]+)/,x)}$1=x[1]' file

答案 3 :(得分:0)

这看起来更简单:

tr A ' ' | tr -d C