
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}}'