让我们考虑以下 CSV 文件格式:
server_name status_code timestamp probe_name
其中 status_code 可以是 I 或 E,并且所有字段都由表格分隔
例如,我们可以考虑以下 CSV 行:
albatros.benches.com I 14:55:23.145 througput_probe
每个 CSV 文件都包含一整天的日志。我试图让所有 hh:mm:ss 时间戳都以实际的 YYYY-mm-dd 为前缀,以便生成的行如下所示:
albatros.benches.com I 2013-02-25 14:55:23.145 througput_probe
作为奖励,由于 CSV 文件包含日期(文件名是 log_2013_02_25.txt)并且因为我有许多这些文件(当然是在不同的日子)要“sed”,我希望我可以自动使用文件名作为在其中获取合适日期并将其应用于时间戳转换的种子。
编辑:文件名是 log_YYYY_MM_DD.txt,而不是前面描述的 log_YYYY-MM-DD.txt)
我的 sed 和正则表达式知识相当有限。到目前为止,我正在使用类似的东西:
s/I^T/I^T 2013-02-25 /g
s/E^T/E^T 2013-02-25 /g
(^T 实际上是一个 ^V 后跟一个制表键)
在我所有的文件上,但这对我来说真的很尴尬。如果有一天我们添加另一个状态码(例如 X),这个技巧将不起作用。我想 sed 处理第三个字段并为其添加前缀会更容易出错。我不知道如何正确地做到这一点。
欢迎任何想法!
谢谢