次のような行が多いファイルがあります。
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
クレジットのためこの回答、コマンド出力を変数に割り当てるためのコードをコピーしました。