中是否有一个常量变量awk
存储今天的日期?如果没有,有没有办法可以存储今天的日期以供日常使用?
假设我们有以下文件:
boo,foo,2016-08-30
foo,boo,2016-07-31
$3
我需要将文件中的日期与今天的日期进行比较,无论它是什么。
即下面的脚本
awk -F, '{if($3>"2015-08-23"){print $0}}'
其中2015-08-23
将由当前日期更改。
答案1
标准中没有内置函数awk
来获取日期,但可以轻松地将日期分配给变量。
awk -F, -v date="$(date +%Y-%m-%d)" '$3>date'
或者在awk
脚本中
BEGIN {
str = "date +%Y-%m-%d";
str | getline date;
close(str);
}
$3>date
gawk
, 有内置的time functions
,并且strftime
可以使用。
gawk -F, 'BEGIN{date=strftime("%Y-%m-%d")}$3>date'
答案2
使用getline
解决方法:
awk -F, ' BEGIN { "date +%Y-%m-%d" | getline a } { if ( $3>a ) { print 0 }} ' file
答案3
如果您想获取当前的 time_t,可以通过调用 srand() 然后调用 t = srand() 来完成。
$ awk 'BEGIN{srand(); print srand()}'
1440536144
这是因为 posix 要求如果在没有 arg 的情况下调用随机函数,则使用当前时间进行初始化并返回先前的种子。
答案4
您可以通过分配一个变量来做到这一点:
cat /path/to/file | awk -v date="$(date +'%Y-%m-%d')" -F, '{if($3>date){print $0}}'