私はSun OSで作業しており、スクリプトがファイル(%Y%m%d形式)から日付を読み取り、その日に1日を追加するようにしたいと思います。

私はSun OSで作業しており、スクリプトがファイル(%Y%m%d形式)から日付を読み取り、その日に1日を追加するようにしたいと思います。

私はSun OS環境で作業しており、ファイル(%Y%m%d形式)から日付を読み、1日を追加して書き換える機能を既存のunix kshスクリプトに追加したいと思います。ファイル内のファイル。 [注:現在の日付に日付を追加するのではなく、ファイルに存在するi / p日付に1日を追加したいです。]例:DateFile.dat 20200620スクリプトの実行が終わったら、スクリプトを20200621に変更したいと思います。ただし、i / p日付を含む変数に1日を追加するとエラーが発生します。

#!/bin/ksh
ip_dte</home/{file_Path}
echo $ip_dte
dte_add=`TZ=AEST-24 "$ip_dte"`
echo $dte_add

ベストアンサー1

パールの使用:

perl -MPOSIX=strftime  -MTime::Local -lne '
    /^(\d{4})(\d{2})(\d{2})$/ or die "Cannot parse time: $_\n";
    ($year, $month, $day) = ($1, $2, $3);
    $time = timelocal 0, 0, 12, $day, $month-1, $year-1900;
    $time += 86400;  # add one day
    print strftime("%Y%m%d", localtime $time);
' datefile

インストールされているPerlバージョンが5.10以降の場合は、次のことができます。

perl -MTime::Piece -MTime::Seconds -lne '
    $fmt = "%Y%m%d";
    $time = Time::Piece->strptime($_, $fmt) or die "Cannot parse time: $_\n";
    $time += ONE_DAY;
    print $time->strftime($fmt);
' datefile

おすすめ記事