shell - 过滤文本文件中的日期
问题描述
我有一个文本文件,其中包含以下格式的数据。我们如何只打印那些日期距当前日期不到 10 天的行?
样本.txt
system system_data8 Thu Jul 29 22:36:38 2021
system system_data9 Wed Jan 24 14:43:52 2018
system system_data3 Tue Jan 23 20:25:17 2018
system system_data2 Fri Mar 09 20:37:05 2018
system system_data5 Fri Mar 09 22:02:31 2018
预期产出
system system_data8 Thu Jul 29 22:36:38 2021
我正在尝试类似下面的东西,但它不起作用。
awk -F ' ' '{printf("%s,%s,",$1,$2);"date +%F -d "$3" "$4" "$5" "$6" "$7;}' sample.txt
解决方案
GNUawk
有时间函数:
$ gawk -v days=10 'BEGIN {max = days*86400; now = systime()}
NF>3 {
mn = (index("JanFebMarAprMayJunJulAugSepOctNovDec",$(NF-3)) + 2)/3
dt = $NF " " mn " " $(NF-2) " " gensub(/:/," ","g",$(NF-1))
diff = now - mktime(dt)
if (-max < diff && diff < max)
print
}' file
system system_data8 Thu Jul 29 22:36:38 2021
推荐阅读
- xamarin - 如何修改 Xamarin.Forms 中的 WebView 以在设备上的浏览器中打开链接?
- mysql - 如何在 MySQL 中选择包含特定数字的行?
- elasticsearch - 弹性搜索中的术语+模糊性
- laravel - 无法使用 stripe sdk 删除测试帐户
- python - AttributeError:“ContactUs”对象没有属性“模型”
- ios - AVAudioEngine - 如何在耳机的每只耳朵上应用不同的带宽
- c - 我是 C 新手,正在测试代码,但我正在努力使用函数
- ignite - Apache Ignite + Spark Dataframes:客户端与服务器的疑问
- smooch - Twitter 的 Smooch API - ConsumerKey 不匹配错误
- .htaccess - 如何在 gtmetrix 0 到 100% 中最小化重定向以提高 htaccess 代码中的站点速度