Aqui está uma maneira de resolver esse problema:
- Adicione uma segunda coluna, com os horários convertidos para a mesma unidade
- Classifique a entrada na segunda coluna
- Solte a segunda coluna
Você pode fazer o passo 1 com um script awk, esse script converte as unidades de tempo em nanossegundos:
{
time = $1;
sub(/[a-z]+$/, "", time);
unit = $1;
sub(/^[^a-z]+/, "", unit);
# convert to nanoseconds
if (unit == "us") {
time *= 1000;
} else if (unit == "ms") {
time *= 1000000;
} else if (unit == "s") {
time *= 1000000000;
}
print $1, time
}
Se você salvar isso em um arquivo convert.awk
, poderá executar as etapas de 1 a 3 com este pipeline:
awk -f convert.awk input.txt | sort -g -k2 | cut -f1 -d' '
O -g
em vez de -n
é necessário no caso de alguns números serem exibidos em notação exponencial. (Crédito ao OP por apontar isso.)