У меня есть текстовый файл с таблицей ниже

3-6-13  0.0712  ./13-t.xyz
3-6-13  0.0717  ./2-t.xyz
3-6-13  0.3737  ./6-t.xyz
3-6-13  0.5862  ./5-t.xyz
3-6-13  0.7503  ./4-t.xyz

как я могу отсортировать его на основе третьего столбца как:

3-6-13  0.0717  ./2-t.xyz
3-6-13  0.7503  ./4-t.xyz
3-6-13  0.5862  ./5-t.xyz
3-6-13  0.3737  ./6-t.xyz
3-6-13  0.0712  ./13-t.xyz

к сожалению, я не могу использовать опцию -v для сортировки;

sort -v -k 3 out.tmp

любое другое решение от awk sed или т. д.?

1 ответ1

1

Вы можете использовать преобразование Шварца: извлечь число в отдельное поле, отсортировать его, затем удалить

$ sed -r 's/(.*\/)([0-9]+)/\2 \1\2/' table.txt | sort -n -k1,1 | cut -d" " -f2-
3-6-13  0.0717  ./2-t.xyz
3-6-13  0.7503  ./4-t.xyz
3-6-13  0.5862  ./5-t.xyz
3-6-13  0.3737  ./6-t.xyz
3-6-13  0.0712  ./13-t.xyz

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .