У меня есть очень большой файл (много гигабайт), который выглядит какКак совместить сортировку по возрастанию и убыванию?
input.txt
a|textA|2
c|textB|4
b|textC|5
e|textD|1
d|textE|4
b|textF|5
На первом этапе, я хочу, чтобы отсортировать строки численно третьего столбца в порядке убывания, и если строки имеют одинаковое значение третьего столбца, они должны быть отсортированы по тексту первого столбца - в порядке возрастания. И если строки имеют равные значения для их 1-го и 3-го столбцов, они должны быть отсортированы по 2-м столбцу в порядке возрастания. Вторая колонка гарантированно будет уникальной и различной.
Итак, я хочу, чтобы результат:
desiredOutput.txt
b|textC|5
b|textF|5
c|textB|4
d|textE|4
a|textA|2
e|textD|1
я могу сделать первый шаг:
sort -t\| -bfrnk3 path/to/input.txt > path/to/output.txt
Но что дальше? И, может быть, результат может быть достигнут за один проход?
EDIT
Я проверил sort -t '|' -k 3,3nr -k 1,1 -k 2,2 input.txt > output.txt
. Он дает следующий «output.txt»:
b|textF|5
b|textC|5
c|textB|4
d|textE|4
a|textA|2
e|textD|1
, который не является тем, что я хочу.
Не понимаю. Я сделал два шага: 1. 'sort -t '|' -k 3,3nr -k 1,1 -k 2,2 path/to/input.txt> path/to/pass1output.txt' 2. 'sort -t '|' -k 3,3nr path/to/pass1output.txt> path/to/output.txt' Выход отличается от того, что я хочу. –
Он дает результат, который отличается от того, что я хочу. Вы проверили «** wishOutput.txt **»? Сравните это с итоговым файлом вашего ответа. –
После первого шага (см. Комментарий выше) - 'b | textF | 5, b | textC | 5, c | textB | 4, d | textE | 4, a | textA | 2, e | textD | 1'. После этого второй шаг не дает желаемого результата. И почему вы дублировали 'sort -t '|' -k 3,3nr'? –