从日期文件中选择记录

时间:2017-10-17 07:44:06

标签: shell date awk

我的文件格式如下: -

10077083725 06-OCT-17   32 06-OCT-17
10077083725 09-OCT-17   35 09-OCT-17

我想根据第4栏中的日期条件选择记录(大约1百万),就像在过去2个月内一样。 2解决方案: -

1)将日期格式转换为: - 20170610,然后使用awk进行简单的字符串比较。

2)直接进行日期比较。

你能说出哪一个更好。此外,我无法找到第二个使用shell脚本的解决方案,因此任何提示都会很有用。

1 个答案:

答案 0 :(得分:0)

安装 coreutils 的MacOSX上的

awk 解决方案。要在linux上使用此功能,请将gdate更改为date。我的答案是两种解决方案的组合:

# cat tst.awk
BEGIN{d=conv(d)}
d <= conv($4)
func conv(str) {
   cmd = "gdate -d '" str "' +'%Y%m%d'"
   res = ((cmd | getline line) > 0 ? line : "")
   close(cmd)
   return res
}

用作输入:

# cat file
10077083725 06-OCT-17   32 06-OCT-17
10077083725 09-OCT-17   35 09-OCT-17

然后:

# awk -v d="-9 days" -f tst.awk  file
10077083725 09-OCT-17   35 09-OCT-17