Вот один из способов решения этой проблемы:
- Добавьте второй столбец, в котором время пересчитано в ту же единицу
- Сортировка ввода по второму столбцу
- Оставьте второй столбец
Вы можете выполнить шаг 1 с помощью скрипта awk, который преобразует единицы времени в наносекунды:
{
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
}
Если вы сохраните это в файле convert.awk
, то можете выполнить шаги 1-3 с этим конвейером:
awk -f convert.awk input.txt | sort -g -k2 | cut -f1 -d' '
-g
вместо -n
необходим, если некоторые числа отображаются в экспоненциальной записи. (Благодарим ОП за указание на это.)