Проверка времени с помощью регулярного выражения

Я хотел бы сделать валидацию о отметке времени одного из моих файлов журнала. Но, похоже, у меня проблема с выражением в выражении case.

Значение TIME может быть примерно как 11:49 или 2011. И я просто хочу проверить, является ли он форматом HH: MM или нет. Код находится ниже.
Он всегда говорит, что формат yearthith в формате HH: MM

#!/usr/bin/ksh TIME=`ls -lrth /var/log/*.log | grep -i upg | tail -1 | awk '{print $8}'` echo "$TIME" validation=false if [[ $TIME != "" ]] then case TIME in "[0-23]+ :[0-59]") validation=true break;; *) echo "Year format";; esac fi echo "$validation 

Обновление: я попытался «[0-2] [0-9]: [0-5] [0-9]»), но проверка еще не завершилась.

One Solution collect form web for “Проверка времени с помощью регулярного выражения”

Проблема в том, что вы не можете проверять TIME с помощью выражения [0-23]+ :[0-59] .

Существует несколько способов сделать это:

  • Чтобы разделить переменную и проверить каждую часть отдельно:
 TIME="06:25" ; [[ $TIME != "" ]] && \ [ ${TIME%:*} -le 23 -a ${TIME%:*} -ge 0 -a \ ${TIME#*:} -le 59 -a ${TIME#*:} -ge 0 ] && echo ok 
  • Чтобы проверить это с общим регулярным выражением, но он примет некоторые случаи неправильного времени (например, 28:59):
 "[0-2][0-9]:[0-5][0-9]") 
  • Проблема с чтением записей из файла
  • Пользователь RBAC не может выполнить useradd в Solaris 10
  • Как НЕ загружать драйверы Solaris SPARC при загрузке
  • Как установить программное обеспечение Netbackup в Solaris?
  • Настройка аудита Solaris 11
  • Как удалить файл с помощью команды mv?
  • Как получить имя хоста вместе с доменным именем?
  • Как я могу переименовать каталог с именем, состоящим только из непечатаемых символов
  • Remap Caps_Lock для управления в Solaris
  • Разрешение имен не работает, но nslookup делает
  • Solaris 11: как получить свойства pkg в машиночитаемом формате
  • Linux и Unix - лучшая ОС в мире.