Я работаю над сценарием bash, используя sed и cut, которые потребуют ввод времени разными способами и выводят их в определенном формате.Вот пример строки:
timeinhour=$(cut -d" " -f2<<<"$line" | sed 's/p/ /' | sed 's/a/ /' | sed 's/am/ /' | sed 's/pm/ /' | sed 's/AM/ /' | sed 's/PM/ /' )
Как вы можете видеть, я просто удаляю любые конечные am или pm из записи времени, которая может быть отформатирована различными способами, оставляя только цифры.
Поэтому я хочу, чтобы эта строка просто показывала время суток (timeinhour), то есть «1000AM» = «10», как «10a» и «10am».
Проблема, с которой я сталкиваюсь, заключается вразличная продолжительность записей времени.Если я скажу sed или cut удалить последние два символа, «1000» будет правильно выводить нужный мне час: «10», но использование его на том, который уже равен «10», очевидно, приведет к пустому выводу.
Я экспериментировал с такой строкой
sed 's/\(.*\)../\1/'
Если у кого-нибудь есть какой-либо совет, я был бы признателен.
Например, этот ввод:
1p
1032AM
419pm
1202a
будет производить:
1
10
4
12