awkで変数値を使用する方法

awkで変数値を使用する方法

数値が保存されるdays.txtというファイルがあります。空。これには1つのレコード(現在7つ)のみが含まれています。

次のawk式でdays.txt値を使用したいと思います。

awk -F, '{ $1 = substr($1,1,1) strftime("%Y%m%d",mktime(sprintf("%4d %.2d %.2d 00 00 00",substr($1,2,4),substr($1,6,2),substr($1,8,2)))-7*24*60*60) }; 1' OFS="," file

このawkステートメントは、デフォルトで他のファイルの日付を7日間移動します。変数にdays.txt値を使用しようとすると、awkステートメントはエラーを返しませんが、日付も移動しません。

awk -F, '{ $1 = substr($1,1,1) strftime("%Y%m%d",mktime(sprintf("%4d %.2d %.2d 00 00 00",substr($1,2,4),substr($1,6,2),substr($1,8,2)))-$(value)*24*60*60) }; 1' OFS="," file

これの助けはとても役に立ちます!

ベストアンサー1

値を最初にシェル変数として読み込むのではなく、awk変数として読みます。

awk '
    BEGIN {FS=OFS="," }
    NR==FNR { value=$0; next }
    { $1 = substr($1,1,1)...substr($1,8,2)))-value*24*60*60) }
1' days.txt file

おすすめ記事