bash - awk 以秒为单位的日期范围

标签 bash awk

我有一个记录文件,按日期存储我们系统的状态。生成它的脚本通过 cron 运行,因此文件不断变长。我写了一个脚本,遍历每一行来处理它,这花了很长时间。我听说 awk 在处理大型文本文件时要快得多。我的问题是我从未使用过它。是否可以使用 awk 获取日期范围内的所有条目?日期均以秒为单位,因为它们是使用 date +%s 生成的。这是我希望能够快速找到范围内数据的输出示例。因此,例如,我如何获取第一列介于 1344279903 和 1344280204 之间的所有行?

1344279903 |  0  | 0 | node  |  1
1344279904 |  0  | 0 | node  |  2
1344279905 |  0  | 0 | node  |  3
1344280202 |  0  | 0 | node  |  1
1344280203 |  0  | 0 | node  |  2
1344280204 |  99  | 0 | node  |  3

最佳答案

您可以像这样使用条件表达式:

awk '$1 >= 1344279903 && $1 <= 1344280204 { print $0 }' data.txt

关于bash - awk 以秒为单位的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834434/

相关文章:

bash - 根据文件中的最后 5 个单词打印第一个单词

bash - 带有空格的 Mac OS shell 脚本 cd 文件夹不起作用

linux - 将 wget 输出覆盖到文本文件

Bash 方法根据索引列表比较两个不同文件中的特定列

arrays - Bash 脚本以特定的顺序或顺序显示结果

linux - 如何在处理开始之前控制 Linux 中的文件 - bash

string - 将回车 (\r) 转换为实际覆盖

linux - 为什么 awk 模式匹配不返回结果?

linux - 使用awk将列中的值替换为txt文件中的另一个值

regex - sed -n 中的多模式