現在の日付(awk)

現在の日付(awk)

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が引数なしでランダム関数を呼び出すと、現在の時刻に初期化され、以前のシードを返す必要があるためです。

答え4

変数を割り当てると、これを行うことができます。

cat /path/to/file | awk -v date="$(date +'%Y-%m-%d')" -F, '{if($3>date){print $0}}'

関連情報