Unix - Сортировка содержимого текстового файла на основе значений первых двух столбцов - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь отсортировать содержимое файла t1.txt на основе первых двух значений столбца, доступных в нем. Если комбинация первых двух значений столбца одинакова, то она должна сохранять строки такими же, как она, и не должна рассматривать полную строку для ее сортировки. Пожалуйста, найдите мои выводы ниже.

Используемый запрос:

cat t1.txt | sort -nk 1,2

Файл - t1.txt

1993-04-11 07:25:16,668 INFO  b: [Cool: read-189231]: Setting
1993-04-11 07:25:16,668 INFO  ab: [Cool: read-189231]: Completed
1993-04-11 07:25:22,768 INFO  ba: [Cool: read-190983]: Execute
1993-04-11 07:25:22,768 INFO  a: [Cool: read-190983]: Main

1993-01-04 06:24:23,148 INFO  b: [Cool: read-189231]: Setting
1993-01-04 06:24:23,148 INFO  ab: [Cool: read-189231]: Completed
1993-01-04 06:25:22,068 INFO  ba: [Cool: read-190983]: Execute
1993-01-04 06:25:22,068 INFO  a: [Cool: read-190983]: Main

Ожидаемый результат:

1993-01-04 06:24:23,148 INFO  b: [Cool: read-189231]: Setting
1993-01-04 06:24:23,148 INFO  ab: [Cool: read-189231]: Completed
1993-01-04 06:25:22,068 INFO  ba: [Cool: read-190983]: Execute
1993-01-04 06:25:22,068 INFO  a: [Cool: read-190983]: Main

1993-04-11 07:25:16,668 INFO  b: [Cool: read-189231]: Setting
1993-04-11 07:25:16,668 INFO  ab: [Cool: read-189231]: Completed
1993-04-11 07:25:22,768 INFO  ba: [Cool: read-190983]: Execute
1993-04-11 07:25:22,768 INFO  a: [Cool: read-190983]: Main

Фактический вывод:

1993-01-04 06:24:23,148 INFO  ab: [Cool: read-189231]: Completed
1993-01-04 06:24:23,148 INFO  b: [Cool: read-189231]: Setting
1993-01-04 06:25:22,068 INFO  a: [Cool: read-190983]: Main
1993-01-04 06:25:22,068 INFO  ba: [Cool: read-190983]: Execute

1993-04-11 07:25:16,668 INFO  ab: [Cool: read-189231]: Completed
1993-04-11 07:25:16,668 INFO  b: [Cool: read-189231]: Setting
1993-04-11 07:25:22,768 INFO  a: [Cool: read-190983]: Main
1993-04-11 07:25:22,768 INFO  ba: [Cool: read-190983]: Execute

1 Ответ

0 голосов
/ 20 апреля 2020

Я думаю, вам нужно добавить опцию -s для сортировки, чтобы обеспечить стабильную сортировку. С https://ss64.com/bash/sort.html:

Наконец, в качестве крайней меры, когда все ключи сравниваются одинаково (или если не были заданы параметры упорядочения вообще), команда 'sort' сравнивает все строки , Сравнение в крайнем случае учитывает глобальную опцию '-r'. Параметр '-s' (стабильный) отключает это последнее средство сравнения, так что строки, в которых все поля сравниваются одинаково, остаются в исходном относительном порядке. Если поля или глобальные параметры не указаны, '-s' не действует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...