Я как раз думал об этом, и из-за того, что високосные годы чередуются с каждым другим четным годом, верно следующее:
([13579][26]|[02468][048]) == leap year
В основном, високосные годы возникают в годы 2 и 6 для нечетных десятилетий, но в годы 4 и 8 для десятилетий с четными номерами и на рубеже каждого второго десятилетия.
Итак, вы можете сделать:
sed -e' /[02468] * 2 * 28 /!b'\
-e'h;/[13579][26] * 2 / G' \
-e' /[02468][048] * 2 /G' \
-e' /\n/s/ 28 / 29 /2' \
-eP\;D out
... который найдет, удвоит, а затем изменит все входные строки 28 февраля только для високосных лет, независимо от начальной точки для любого цикла чередования.
Это был мой первый инстинкт:
sed -e'/\([02648] * 2 * 2\)8 /!b' \
-e:n -e'n;//!bn' -e'p;s//\19 /'
... который был лишь небольшой адаптацией к моему ответу на ваш другой вопрос , но который будет работать только для каждой серии, в которой встречается первый четный год. не високосный, потому что работает поочередно.
Я протестировал оба sed
с моим тестовым файлом из вашего другого вопроса . У infile, конечно, уже были високосные годы, и код, который я использовал для его генерации, тоже есть в ответе, но оба работали для серии, начинающейся с 1970 года, хотя первый все равно не сломался:
1970 2 27 58
1970 2 28 59
1970 3 1 60
1972 2 27 58
1972 2 28 59
1972 2 29 59
1972 2 29 60
1972 3 1 61
1974 2 27 58
1974 2 28 59
1974 3 1 60
1976 2 27 58
1976 2 28 59
1976 2 29 59
1976 2 29 60
1976 3 1 61
1978 2 27 58
1978 2 28 59
1978 3 1 60
1980 2 27 58
1980 2 28 59
1980 2 29 59
1980 2 29 60
1980 3 1 61
Проверьте, является ли nginx единственной программой, прослушивающей порт 80. Например, если у вас запущен apache2, это возможно, поскольку оба сервера прослушивают один и тот же порт, и возникает путаница. Вот полезная ссылкаhttps://www.cyberciti.biz/faq/find-linux-what-running-on-port-80-command/Также, в зависимости от браузера, который вы используете при написании url, немного поиграйтесь с url, укажите порт :192.168.1.5 :80 или попробуйте с доменом сервера.