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