команда Sort

Thank you for reading this post, don't forget to subscribe!

Коман­да Sort в Linux исполь­зу­ет­ся для сор­ти­ров­ки содер­жи­мо­го тек­сто­вых фай­лов. Из этой ста­тьи вы узна­е­те несколь­ко основ­ных при­ме­ров коман­ды sort.

 

Команда Sort в Linux

Коман­да sort упо­ря­до­чи­ва­ет тек­сто­вые стро­ки полез­ны­ми спо­со­ба­ми. Этот про­стой инстру­мент может помочь вам быст­ро отсор­ти­ро­вать инфор­ма­цию из команд­ной стро­ки.

Син­так­сис

 

Вы долж­ны отме­тить несколь­ко вещей:

  • При исполь­зо­ва­нии сор­ти­ров­ки без каких-либо пара­мет­ров при­ме­ня­ют­ся пра­ви­ла по умол­ча­нию. Это помо­га­ет понять пра­ви­ла по умол­ча­нию, что­бы избе­жать неожи­дан­ных результатов.
  • При исполь­зо­ва­нии сор­ти­ров­ки ваши исход­ные дан­ные в без­опас­но­сти. Резуль­та­ты ваше­го вво­да отоб­ра­жа­ют­ся толь­ко в команд­ной стро­ке. Одна­ко вы може­те ука­зать вывод в отдель­ный файл, если хоти­те. Подроб­нее об этом позже.
  • Сор­ти­ров­ка изна­чаль­но была раз­ра­бо­та­на для исполь­зо­ва­ния с сим­во­ла­ми ASCII. Мы не про­ве­ря­ли это, но воз­мож­но, что раз­ные коди­ров­ки могут при­ве­сти к неожи­дан­ным результатам.

Пра­ви­ла по умол­ча­нию в коман­де sort

Это пра­ви­ла по умол­ча­нию при исполь­зо­ва­нии сор­ти­ров­ки. Пер­вые несколь­ко при­ме­ров про­яс­нят, как управ­ля­ют­ся эти при­о­ри­те­ты. Тогда мы рас­смот­рим спе­ци­а­ли­зи­ро­ван­ные варианты.

  • циф­ры> буквы
  • строч­ные> прописные

 

Примеры команды сортировки

Поз­воль­те нам пока­зать вам несколь­ко при­ме­ров коман­ды sort, кото­рые вы може­те исполь­зо­вать в раз­лич­ных ситуациях.

 

1. Сортировка в алфавитном порядке

Коман­да sort по умол­ча­нию поз­во­ля­ет лег­ко про­смат­ри­вать инфор­ма­цию в алфа­вит­ном поряд­ке. Ника­ких опций не тре­бу­ет­ся, и даже для запи­сей со сме­шан­ным реги­стром сор­ти­ров­ка AZ рабо­та­ет долж­ным образом

Мы соби­ра­ем­ся исполь­зо­вать при­мер тек­сто­во­го фай­ла с име­нем andreyex.txt, и если вы про­смот­ри­те содер­жи­мое фай­ла , вы уви­ди­те следующее:

Linux
Debian
Mint
CentOS
Ubuntu

 

Вот отсор­ти­ро­ван­ный по алфа­ви­ту вывод:

 

2. Сортировка по числовому значению [опция -n]

Давай­те возь­мем тот же спи­сок, кото­рый мы исполь­зо­ва­ли в преды­ду­щем при­ме­ре, и отсор­ти­ру­ем по поряд­ку номе­ров. Если вам инте­рес­но, спи­сок отра­жа­ет одни из дис­три­бу­ти­вов Linux.

Мы изме­ни­ли содер­жи­мое фай­ла так, что­бы эле­мен­ты были про­ну­ме­ро­ва­ны, но не в поряд­ке, как пока­за­но ниже.

1. Debian
2. CentOS
3. Linux
4. Mint
5. Ubuntu

 

После сор­ти­ров­ки результат:

 

Выгля­дит хоро­шо, прав­да? Вы може­те пола­гать­ся на этот метод, что­бы точ­но рас­по­ло­жить ваши дан­ные? Воз­мож­но нет. Давай­те посмот­рим на дру­гой при­мер, что­бы выяс­нить, почему.

Вот наш новый обра­зец текста:

1
5
10
3
5
2
60
23
432
21

 

Теперь, если мы исполь­зу­ем коман­ду sort без каких-либо опций, то вот что мы получим:

 

При­ме­ча­ние
Чис­ла сор­ти­ру­ют­ся толь­ко по их началь­ным буквам.

При добав­ле­нии пара­мет­ра -n, оце­ни­ва­ет­ся чис­ло­вое зна­че­ние стро­ки, а не толь­ко пер­вый сим­вол. Теперь вы може­те видеть, что наш спи­сок пра­виль­но отсортирован.

Теперь у вас будет пра­виль­но отсор­ти­ро­ван­ный вывод:
1
2
3
5
5
10
21
23
60
432

 

3. Сортировка в обратном порядке [опция -r]

Для это­го мы сно­ва будем исполь­зо­вать наш спи­сок дис­три­бу­ти­вов. Обрат­ная функ­ция не тре­бу­ет пояс­не­ний. Это изме­нит поря­док содер­жи­мо­го ваше­го файла.

 

И здесь у вас есть выход­ной текст в обрат­ном порядке:

 

4. Случайная сортировка [опция -R]

Если вы слу­чай­но нажа­ли кла­ви­шу Shift, при попыт­ке выпол­нить функ­цию ревер­са, воз­мож­но, вы полу­чи­ли стран­ные резуль­та­ты. -R пере­став­ля­ет вывод в слу­чай­ном порядке.

 

Вот слу­чай­но отсор­ти­ро­ван­ный вывод:

 

5. Сортировать по месяцам [опция -M]

Сор­ти­ров­ка так­же име­ет встро­ен­ную функ­ци­о­наль­ность, что­бы орга­ни­зо­вать по меся­цам. Он рас­по­зна­ет несколь­ко фор­ма­тов, осно­ван­ных на инфор­ма­ции о кон­крет­ной лока­ли. Мы попы­та­ем­ся про­де­мон­стри­ро­вать несколь­ко несо­от­вет­ству­ю­щих тестов, что­бы пока­зать, что это будет орга­ни­зо­ва­но по дате, а не по году. Сокра­ще­ния меся­ца отоб­ра­жа­ют­ся перед пол­ны­ми именами.

Вот при­мер тек­сто­во­го фай­ла в этом примере:

Mar
March
February
Apr
April
August
July
June
November
September
1
4
3
6
01/03/19
01/08/19
02/09/18

 

Давай­те раз­бе­рем по меся­цам, исполь­зуя опцию -M:

 

Вот резуль­тат, кото­рый вы увидите:

 

6. Сохраните отсортированные результаты в другой файл

Как мы упо­ми­на­ли ранее, сор­ти­ров­ка не изме­ня­ет исход­ный файл по умол­ча­нию. Если вам нуж­но сохра­нить отсор­ти­ро­ван­ный кон­тент, это мож­но сделать.

Для это­го при­ме­ра мы созда­ли новый файл, в кото­ром хотим, что­бы отсор­ти­ро­ван­ная инфор­ма­ция была напе­ча­та­на и сохра­не­на с име­нем andreyex_sorted.txt.

Вни­ма­ние: если вы попы­та­е­тесь пере­на­пра­вить отсор­ти­ро­ван­ные дан­ные в один и тот же файл, он сотрет содер­жи­мое ваше­го файла.

 

Если вы исполь­зу­е­те коман­ду cat в выход­ном фай­ле, это будет его содержимое:

 

7. Сортировать определенный столбец [опция -k]

Если в вашем фай­ле есть таб­ли­ца, вы може­те исполь­зо­вать опцию -k, что­бы ука­зать, какой стол­бец сор­ти­ро­вать. Мы доба­ви­ли несколь­ко про­из­воль­ных чисел в каче­стве тре­тье­го столб­ца и будем отоб­ра­жать выход­ные дан­ные, отсор­ти­ро­ван­ные по каж­до­му столб­цу. Мы вклю­чи­ли несколь­ко при­ме­ров, что­бы пока­зать раз­но­об­ра­зие воз­мож­ных резуль­та­тов. Опции добав­ля­ют­ся после номе­ра столбца.

Читать  10 основ­ных команд Linux для начинающих

1. Debian 300
2. CentOS 200
3. Linux 100
4. Mint 400
5. Ubuntu 500

 

Это поз­во­лит отсор­ти­ро­вать текст во вто­ром столб­це в алфа­вит­ном порядке:

 

 

Это поз­во­лит отсор­ти­ро­вать текст по циф­рам в тре­тьем столбце.
3. Linux 100
2. CentOS 200
1. Debian 300
4. Mint 400
5. Ubuntu 500

То же, что и выше­упо­мя­ну­тая коман­да, толь­ко что поря­док сор­ти­ров­ки был обратным.

 

8. Сортировка и удаление дубликатов [опция -u]

Если у вас есть файл с потен­ци­аль­ны­ми дуб­ли­ка­та­ми, опция -u зна­чи­тель­но облег­чит вашу жизнь. Помни­те, что сор­ти­ров­ка не будет вно­сить изме­не­ния в исход­ный файл дан­ных. Мы реши­ли создать новый файл толь­ко с эле­мен­та­ми, кото­рые явля­ют­ся дуб­ли­ка­та­ми. Ниже вы уви­ди­те вход­ные дан­ные, а затем содер­жи­мое каж­до­го фай­ла после выпол­не­ния команды.

1. Debian
2. CentOS
3. Linux
4. Mint
5. Ubuntu
2. CentOS
3. Linux
4. Mint
1. Debian
3. Linux
5. Ubuntu

 

 

Вот выход­ные фай­лы отсор­ти­ро­ва­ны и без дубликатов.

 

9. Игнорировать регистр при сортировке [опция -f]

Мно­гие совре­мен­ные дис­три­бу­ти­вы, рабо­та­ю­щие с sort, по умол­ча­нию реа­ли­зу­ют игно­ри­ро­ва­ние реги­стра. Если это не так, добав­ле­ние опции -f даст ожи­да­е­мые результаты.

 

Вот вывод, где слу­чаи игно­ри­ру­ют­ся коман­дой sort:

 

10. Сортировка по числовым значениям человека [опция -h]

Эта опция поз­во­ля­ет срав­ни­вать бук­вен­но-циф­ро­вые зна­че­ния, такие как 2k (то есть 2000).

 

Вот отсор­ти­ро­ван­ный вывод:

 

Мы наде­ем­ся, что эта ста­тья помог­ла вам полу­чить базо­вое исполь­зо­ва­ние коман­ды sort в Linux