我的文件格式如下: -
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脚本的解决方案,因此任何提示都会很有用。
答案 0 :(得分:0)
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