Это работает для меня:
sudo dmidecode | grep "BIOS Information" -A10 | grep -e "Version:" -e "Vendor:"
Вы можете преобразовать оба формата во что-то однозначное, например, время эпохи, отсортировать по нему, а затем отбросить. Например, используя Миллера
mlr --tsv put '
$epoch = ($date =~ "^[A-Z][a-z][a-z]") ? strptime($date,"%a %b %d %H:%M:%S %Z %Y") : strptime($date,"%Y-%m-%d %H:%M:%S")
' then sort -n epoch then cut -f date input
Попробуйте преобразовать ваш формат "%a %b %d %H:%M:%S %Z %Y"
(или любой другой формат, распознаваемый date -d
). на%F %T
(%Y-%m-%d %H:%M:%S
)с помощью awk
и команды date
.
Номер поля для преобразования задается в переменной awk col
, и поле пропускается, если оно уже имеет правильный формат. Ну, вы можете убрать галочку, но очевидно, что это замедлит работу скрипта.
awk -v col=3 '
BEGIN{ FS=OFS="\t" }
# or remove the check and begin the next line with an opening `{`
$(col) !~ /^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$/{
cmd="date -u -d \"" $(col) "\" +\"%F %T\""
cmd | getline $(col)
close(cmd)
$0=$0
}
1
' infile > outfile
Затем используйте лексикографическую сортировку в нужном поле, например. sort -t$'\t' -k3,3 file
.