awk
には、今日の日付を格納する定数変数がありますか?いいえの場合、毎日の使用のために今日の日付を保存できる方法はありますか?
以下のファイルがあるとしましょう:
boo,foo,2016-08-30
foo,boo,2016-07-31
そして、日付を比較する必要があります$3
は、ファイルの中で、今日が何であるかに関係なく、今日の日付です。
つまり、以下のスクリプト:
awk -F, '{if($3>"2015-08-23"){print $0}}'
どこ 2015-08-23
は現在の日付によって変更されます。
標準の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'
現在のtime_tを取得したい場合は、srand()を呼び出してからt = srand()を呼び出すことで実行できます。
$ awk 'BEGIN{srand(); print srand()}'
1440536144
これはposixが引数なしで呼び出された場合、現在の時間で初期化され、前のシードを返す必要があるため、機能します。
getline
回避策の使用:
awk -F, ' BEGIN { "date +%Y-%m-%d" | getline a } { if ( $3>a ) { print 0 }} ' file
変数を割り当てることでそれを行うことができます:
cat /path/to/file | awk -v date="$(date +'%Y-%m-%d')" -F, '{if($3>date){print $0}}'