Я написал следующий Баш скрипт для преобразования миллисекунды Дни: часы: минуты: секунды: миллисекунды, чтобы сделать лог-файл более читаемым:Bash скрипт для преобразования миллисекунды Дни: часы: минуты: секунды: миллисекунды
#!/bin/bash
### Constants ###
CON_DAYS=.0000000115741
CON_HOURS=.000000277778
CON_MINUTES=.000066667
CON_SECONDS=.001
### Variables ###
INPUT="$1"
cat $INPUT | awk -v CON_HOURS=$CON_HOURS -v CON_MINUTES=$CON_MINUTES -v CON_SECONDS=$CON_SECONDS -v CON_DAYS=$CON_DAYS '
{ $1=substr($0,0,10) }
{ MILLISECONDS = $1 }
{ DAYS = int(MILLISECONDS * CON_DAYS) }
{ MILLISECONDS = MILLISECONDS - int(DAYS/CON_DAYS) }
{ HOURS = int(MILLISECONDS * CON_HOURS) }
{ MILLISECONDS = MILLISECONDS - int(HOURS/CON_HOURS) }
{ MINUTES = int(MILLISECONDS * CON_MINUTES) }
{ MILLISECONDS = MILLISECONDS - int(MINUTES/CON_MINUTES) }
{ SECONDS = int(MILLISECONDS * CON_SECONDS) }
{ MILLISECONDS = MILLISECONDS - int(SECONDS/CON_SECONDS) }
{ $1 = DAYS":"HOURS":"MINUTES":"SECONDS":"MILLISECONDS"ms" }
{print}'
exit
Раздел входного файла:
1882224617mS ATMChannel: [1] CMLinkLayer Rx: 'DialDigits' (ls)
1882224617mS ATMIO: [1] TONE DIAL (11 digits)
1882224617mS ATMChannel: [1] StateChange Connected->ToneDialing
Есть несколько строк вывода, который показывает, что он не работает правильно:
22:19:224:14:186ms ATMChannel: [1] CMLinkLayer Rx: 'DialDigits' (ls)
22:19:224:14:186ms ATMIO: [1] TONE DIAL (11 digits)
22:19:224:14:186ms ATMChannel: [1] StateChange Connected->ToneDialing
После нескольких часов поиска неисправностей я не могу найти свою ошибку. Любая помощь приветствуется.
Можете ли вы разместить образец ввода и ожидаемый результат? – BroSlow
Образец ввода был добавлен в сообщение. – socialdtk
Текст на неисправном выходе, похоже, не находится на входе. Можете ли вы отредактировать ввод образца, чтобы включить неисправные входы? Удачи. – shellter