Подтвердить что ты не робот

Как использовать команду Linux Сортировка для сортировки текстового файла в соответствии с 4-м столбцом, числовым порядком?

У меня есть такой файл (который ограничен пробелом):

AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
AX-19 Chr1_419087 1 41908740 T C 0 15 0.067
AX-20 Chr1_419087 1 41908741 T C 0 13 0.067

и я хочу использовать команду sort для сортировки файла в соответствии с 4-м столбцом. Я искал его повсюду в Интернете, и я нахожу разные решения, которые работают монахини! Я даже нашел аналогичный вопрос в stackoverflow, который ответ не работал у меня! так что это команды, которые я использую и не работаю!

sort -n -k 4,1 out1.txt
sort -n -k 4 out1.txt
sort -n -k4 out1.txt
sort -nk4 out1.txt
sort +4 out1.txt

поэтому после запуска всех этих команд я получаю этот вывод (который идентичен моему вводу):

AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
AX-19 Chr1_419087 1 41908740 T C 0 15 0.067
AX-20 Chr1_419087 1 41908741 T C 0 13 0.067

Я хочу получить такой вывод:

AX-19 Chr1_419087 1 41908741 T C 0 15 0.067
AX-20 Chr1_419087 1 41908740 T C 0 13 0.067
AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
4b9b3361

Ответ 1

sort -nk4 file

-n for numerical sort
-k for providing key

или добавить -r option для обратной сортировки

sort -nrk4 file

Ответ 2

sort не сортирует файл на месте. Вместо этого он выдает отсортированную копию.

Вам нужно sort -n -k 4 out.txt > sorted-out.txt.

Изменить: Чтобы получить заказ, вам нужно отсортировать файл с цифрами, считанными в обратном порядке. Это делает:

cut -d' ' -f4 out.txt | rev | paste - out.txt | sort -k1 -n | cut -f2- > sorted-out.txt

Ответ 3

Это должно быть

sort -k 4n out1.txt

Просто протестировал это с помощью GNU sort (--debug enabled):

$ tac input | /bin/sort --debug -k 4n
/bin/sort: using simple byte comparison
/bin/sort: key 1 is numeric and spans multiple fields
AX-18 Chr1_419085 1 41908545 T C -1 98 0.51
                    ________
___________________________________________
AX-19 Chr1_419087 1 41908740 T C 0 15 0.067
                    ________
___________________________________________
AX-20 Chr1_419087 1 41908741 T C 0 13 0.067
                    ________
___________________________________________

Ответ 4

Полезно отметить, что если слова в каждой строке файла разделены разделителем, кроме "пробела", мы можем указать разделитель, используя опцию "-t":

sort -n -t',' -k4 file -o outfile

Мы можем получить отсортированный результат в любом указанном выходном файле (с использованием опции "-o" ) вместо отображения вывода на стандартном выходе.

источник: http://www.thegeekstuff.com/2013/04/sort-files/