我遇到了一些我需要以糟糕的时间格式导入我的数据库的文件
A09:13:08C
甚至不确定它代表什么 有没有快速的方法使用sed来替换空格中的'A'并删除'C'?
答案 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