bashでx日の追加をvarに変換する方法

bashでx日の追加をvarに変換する方法

次のような行が多いファイルがあります。

0 D FakeSip          192.169.192.192                      jan/26/2022 17:10:31

IPアドレスと日付をエクスポートしてから、日付に10日を追加して有効期限を指定したいと思います。 IPを取得して日付を挿入することは問題ありませんが、日付に10日を追加してエクスポートするのは痛いです。少しでも助けてくれてありがとう。

cat FakeSip.txt|awk --posix '$4 ~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ { print " IP Address "$4 " Date Identified "$5 " Expiration " (date -d  $5+10 days);}' 

これは上記の出力です。

IP Address 192.241.212.118 Date Identified jan/25/2022 Expiration 010

希望の出力は次のとおりです。

IP Address 192.169.192.192 Date Identified jan/26/2022 Expiration Feb/05/2022

ベストアンサー1

  LANG=C LC_ALL=C awk '
    $4 ~ /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/
      {
        dvar = $5;
        gsub("[^[:digit:][:alpha:]]+"," ",dvar); # turn any special character into space to make date parseable and protect against command injection
        cmd = "date -d \"" d"+10 days\" +%b/%d/%Y";
        cmd | getline expire; close(cmd);
        print " IP Address "$4 " Date Identified "$5 " Expiration " expire
      }
    ' FakeSip.txt

クレジットのためこの回答、コマンド出力を変数に割り当てるためのコードをコピーしました。

おすすめ記事