Как я могу использовать & ldquo; sort & rdquo; команда на конкретное поле?

В приведенном ниже примере (исходный файл намного больше), как я могу отсортировать строки w.r.t. номер строки в / 185 / и / 215 /?

/home/sorbilene/GAMIT_PROCESS/displacement/2/185/gsoln/res_2017-185_2017-186/MEAN.SP80.mit.orbit.res:XYZ Reference position :   4256626.64484  2703340.32982  3894478.42832 (IGb08)
/home/sorbilene/GAMIT_PROCESS/displacement/2/215/gsoln/res_2017-215_2017-216/MEAN.SP80.mit.orbit.res:XYZ Reference position :   4256626.82197  2703340.51128  3894478.40716 (IGb08)
/home/sorbilene/GAMIT_PROCESS/displacement/2/185/gsoln/res_2017-185_2017-186/MEAN.SP80.mit.orbit.res:XYZ Reference position :   4256626.64992  2703340.34367  3894478.43906 (IGb08)

отсортированные строки должны быть следующими:

/home/sorbilene/GAMIT_PROCESS/displacement/2/185/gsoln/res_2017-185_2017-186/MEAN.SP80.mit.orbit.res:XYZ Reference position :   4256626.64484  2703340.32982  3894478.42832 (IGb08)
/home/sorbilene/GAMIT_PROCESS/displacement/2/185/gsoln/res_2017-185_2017-186/MEAN.SP80.mit.orbit.res:XYZ Reference position :   4256626.64992  2703340.34367  3894478.43906 (IGb08)
/home/sorbilene/GAMIT_PROCESS/displacement/2/215/gsoln/res_2017-215_2017-216/MEAN.SP80.mit.orbit.res:XYZ Reference position :   4256626.82197  2703340.51128  3894478.40716 (IGb08)
1
задан 12 January 2018 в 23:39

1 ответ

sort -t '/' -k 7 -n your_input_file

Объяснение:

  • -t '/' определяет '/' как разделитель полей
  • -k 7 принимает седьмое поле в качестве критерия сортировки ( пустое поле перед первым символом '/' также должно учитываться)
  • -n указывает числовую сортировку.

Если вы хотите сохранить порядок входного файла для всех строк, где седьмое поле равно, вы можете добавить (а затем удалить) номер строки в качестве поля второй сортировки:

nl -n rz your_input_file | sort -n -k 7 -k 1 -t '/' | sed 's/^[0-9]*\t//'

Объяснение:

  • nl -n rz добавляет номер строки, дополненный нулями, перед каждой строкой
  • Команда sort сортирует после седьмого поля, а затем номер строки
  • Команда sed удаляет номер строки.
2
ответ дан 12 January 2018 в 23:39

Другие вопросы по тегам:

Похожие вопросы: