我有 sample.txt 文件,文件中的数据如下所示:
LINE 1|2017-02-19|LINE 3|LINE 4| LINE 5 | LINE 6
LINE 1|2017-02-06|LINE 3|LINE 4| LINE 5 | LINE 6
LINE 1|2017-03-06|LINE 3|LINE 4| LINE 5 | LINE 6
LINE 1|2017-02-07|LINE 3|LINE 4| LINE 5 | LINE 6
LINE 1|2017-03-25|LINE 3|LINE 4| LINE 5 | LINE 6
LINE 1|2017-02-06|LINE 3|LINE 4| LINE 5 | LINE 6
现在我想从 sample.txt 文件中获取数据
2017-02-19
2017-02-06
2017-03-06
2017-02-07
2017-03-25
2017-02-06
> 2017-02-19
所以我的输出应该是这样的
LINE 1|2017-03-06|LINE 3|LINE 4| LINE 5 | LINE 6
LINE 1|2017-03-25|LINE 3|LINE 4| LINE 5 | LINE 6
最佳答案
使用 GNU awk和 date
- 设置field separator
FS
到|
date -d[DATE] +[OUTPUT_FORMAT]...
会将字段二 ($2
) 格式化为自 unix epoch 以来的秒数 (%s
) 并将其通过管道传递给变量d
- Awk 将测试
d
是否小于2017-02-19
其自纪元以来的秒数为1487480400
和 如果为 true 将打印整个记录$0
代码
awk 'BEGIN{FS="|";} { "date -d"$2" +%s" | getline d;} d < 1487480400 { print $0; }'
注意:您可以通过将 print $0;
更改为 print $1;
、print $1,$2;
来仅打印特定字段code>,甚至 print $1"anythingYouWantHereQuoted"$2;
查找自 Unix 纪元给定日期以来的秒数
例如,您可以从命令行使用 date -d2017-02-19 +%s
找到给定日期的 Unix 纪元以来的秒数。
关于linux - 如何在linux中获取大于/小于提供日期的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43713668/