Сортировка unix в алфавитном порядке, а затем в числовом, работает не так, как я предполагал

По моему опыту, /etc/resolv.conf восстанавливается при загрузке, поэтому любые ручные изменения в нем сбрасываются.

Чтобы обойти это, вы можете создать /etc/resolv.conf.head (или .tail в зависимости от того, в какой конец файла вы хотите добавить) и вставить желаемые пользовательские настройки (обычно изменяется сервер имен ). Затем содержимое этого файла добавляется автоматически, когда /etc/resolv.conf создается NetworkManager (или какой-либо другой службой, отвечающей за файл в вашей системе).

2
01.08.2017, 09:25
2 ответа

, сортируя их в алфавитном порядке по 1-му полю, а численно по 2-му дает (в вашем выводе - chr4_oligo95 стоит перед ch4_oligo4)

sort -k1,1 -k2n,2n file 
chr1_oligo1 50  100
chr1_oligo256   150 200
chr1_oligo6 3500    3550
chr2_oligo1234  700 750
chr2_oligo1236  750 800
chr4_oligo4 150 200
chr4_oligo95    50  100
chr5_oligo1 50  100
0
27.01.2020, 22:04

sort -k1,1 -nk2 то же самое, что sort -k1,1 -n -k2 , то же самое, что sort -n -k1,1 -k2 , так как в числовая сортировка включена глобально для всех ключей.

Чтобы отсортировать 2 и ключ только численно, вам нужно добавить n к описанию этого ключа сортировки, как в:

sort -k1,1 -k2n

Или:

sort -k1,1 -k2,2n

С n и с разделителем полей по умолчанию 2 совпадает с 2,2 , хотя. 2 будет частью строки, начинающейся со второго поля, но при интерпретации как число это то же самое, что и только второе поле ( 2,2 ).

Здесь вы также можете выполнить числовую сортировку по числу после chr , затем по алфавиту в остальной части первого поля, а затем в числовом порядке по второму полю с помощью:

sort -k1.4n -k1,1 -k2n
4
27.01.2020, 22:04

Теги

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