Ответ 1
sort -nk4 file
-n for numerical sort
-k for providing key
или добавить -r option
для обратной сортировки
sort -nrk4 file
У меня есть такой файл (который ограничен пробелом):
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
sort -nk4 file
-n for numerical sort
-k for providing key
или добавить -r option
для обратной сортировки
sort -nrk4 file
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
Это должно быть
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
________
___________________________________________
Полезно отметить, что если слова в каждой строке файла разделены разделителем, кроме "пробела", мы можем указать разделитель, используя опцию "-t":
sort -n -t',' -k4 file -o outfile
Мы можем получить отсортированный результат в любом указанном выходном файле (с использованием опции "-o" ) вместо отображения вывода на стандартном выходе.