Может быть что-то вроде:
awk '
function isleap(y) {
return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)
}
$2 == 3 && $3 == 1 && isleap($1) && last_day != 29 {
print $1, 2, 29, (last_data + $4) / 2
}
{print; last_day = $3; last_data = $4}' file