【发布时间】:2014-08-29 00:33:55
【问题描述】:
我有一个这种格式的文本文件:
a0,b0,c0,27/Aug/2014:23:58,e0
a1,b1,c1,27/Aug/2014:23:58,e1
a2,b2,c2,27/Aug/2014:23:58,e2
a3,b3,c3,27/Aug/2014:23:58,e3
a4,b4,c4,27/Aug/2014:23:58,e4
最后我需要想出
a0,b0,c0,28 Aug 2014 05:58,e0
a1,b1,c1,28 Aug 2014 05:58,e1
a2,b2,c2,28 Aug 2014 05:58,e2
a3,b3,c3,28 Aug 2014 05:58,e3
a4,b4,c4,28 Aug 2014 05:58,e4
我必须这样做
sed 's/\//\ /g' | sed 's/:/\ /'
格式化日期
然后我需要做类似的事情:
date -d "19 Aug 2014 13:51:23 6 hours"
让时间提前 6 小时
但我偶然发现的问题是我如何才能仅在该行上执行所有这些操作?
【问题讨论】:
-
在该行或列上?
-
sed 's/\//\ /g' | sed 's/:/\ /'最好写成sed 's/\//\ /g;s/:/\ /'。如果您的sed方言不喜欢这个特殊的习语,也许可以使用多个-e选项或换行符而不是分号。但是,当然,任务的其余部分需要 Awk 或 Perl 之类的东西,所以在这种情况下最好在那里完成所有处理。