合并行并执行日期操作

时间:2014-12-01 12:20:03

标签: linux shell date unix scripting

我有一个包含以下行的文件:

file.txt的

# 0, 18540, Wed Oct 26 08:01:40 2014
`cd xyz`
# 0, 18571, Wed Nov 26 08:01:41 2014
`cd abc`
# 0, 18881, Wed Nov 26 08:01:55 2014
`mkdir lib`

现在,我想将文件的内容替换为以下内容:

new_file.txt

2014/Oct/26 08:01:40 `cd xyz`
2014/Nov/26 08:01:41 `cd abc`
2014/Nov/26 08:01:55 `mkdir lib`

脚本或shell命令会很棒。

1 个答案:

答案 0 :(得分:0)

如何在奇数行上捕捉第3个字段并计算日期如下:

$ date -d"Wed Oct 26 08:01:40 2014" +"%Y/%b/%d %T"
2014/Oct/26 08:01:40

然后,存储变量并将其与完整的偶数行一起打印出来:

$ awk -F, 'NR%2{cmd ="date \"+%Y/%b/%d %T\" -d \""$3"\""
                cmd | getline var
                close (cmd)
                next
                }
           {print var, $0}' file

对于您的输入,它返回:

$ awk -F, 'NR%2{cmd ="date \"+%Y/%b/%d %T\" -d \""$3"\""; cmd | getline var; close (cmd); next} {print var, $0}' file
2014/Oct/26 08:01:40 `cd xyz`
2014/Nov/26 08:01:41 `cd abc`
2014/Nov/26 08:01:55 `mkdir lib`