linux sort komanda

Kako da sortirate sadržaj fajla u Linux-u

8 фебруара, 2021

Linux sort komanda nudi zaista dosta načina za sortiranje, od alfanumeričkog do nasumičnog (random). U ovom tekstu ćemo objasniti neke od najkorisnijih.

Linux komanda sort može da da mnogo varijanti sortiranja na izlazu iz komande ili sadržaja nekog fajla: po alfabetu, numerički, po mesecu, nasumično, su samo neki od najčešće korišćenih varijanti. U ovom tekstu ćemo objasniti kako da koristite neke od najkorisnijih opcija za sortiranje i objasniti u čemu se oni razlikuju.

Podrazumevano

Podrazumevano sortiranje je ujedno i najjednostavnije. Prvo dolaze brojevi praćeni slovima, a onda za svako slovo, malo slovo prethodi velikom slovu. Drugim rečima, podrazumevanim (default) sortiranjem dobijate ovakav izlaz:

012345aAbBcCdDeE

ASCII redosled

Posmatrajući numeričku vrednost bajta za svako od ovih slova, možda ste primetili da ono pto vidite iznad nije prirodan redosled, bar što se tiče ASCII redosleda.

$ echo 012345aAbBcCdDeE | od -bc
0000000 060 061 062 063 064 065 141 101 142 102 143 103 144 104 145 105
0 1 2 3 4 5 a A b B c C d D e E

Kao što vidite, velika slova imaju manje ASCII vrednosti i došla bi pre malih slova, da su izlistana po ASCII redosledu. Da biste sortirali prema vrednosti bajta, sort komandi treba da dodate LC_ALL=C. Na primer, evo uporednog prikaza sortiranja po bajtu i podrazumevanog sortiranja:

$ LC_ALL=C sort file $ sort file
0 0
1 1
2 2
3 3
4 4
5 5
A <== a <==
B <== A <==
C b
D B
E c
a C
b d
c D
d e
e E

Numerički redosled

Da biste sortirali numerički, treba da koristite opciju -n, jer u suprotnom nećete dobiti dobar izlaz. Evo uporednog prikaza podrazumevanog i numeričkog sortiranja:

$ sort numbers $ sort -n numbers
0 0
1 1
11 4
4 9
44 11
9 44

Takođe, možete sortirati numerički uz upotrebu takozvanog human-friendly redosleda sortiranja. Ovo vam omogućava da predstavite brojeve koji nisu samo brojevi, a često se koriste za izražavanje određenih brojeva – npr 5M (5 miliona), 2K (dve hiljade)…itd. Opcija koju ćete koristiti za ovu namenu je -h. Kada je koristite, 2K će biti tretirano kao veće od 200, a manje od 2M. Evo uporednog prikaza podrazumevanog i human-friendly sortiranja:

$ sort numbers $ sort -h numbers
0 0
1 1
11 4
4 9
44 11
500 44
5K 500
5M 5K
9 5M

sortiranje

Sortiranje po mesecu

Da biste sortirali po nazivu meseca, koristićete opciju -m. Evo uporednog prikaza podrazumevanog sortiranja i sortiranja po mesecu:

$ sort months # sort -M months
Apr Jan
Aug Feb
Dec Mar
Feb Apr
Jan May
Jul Jun
Jun Jul
Mar Aug
May Sep
Nov Oct
Oct Nov
Sep Dec

Obratite pažnju da sortiranje po mesecu radi bez obzira da li ste naveli pun naziv meseca ili ste koristili skraćenice (Jan, Feb…).

Važno je i da napomenemo da sortiranje po mesecu nije sitovremeno i sortiranje po danu. Ova opcija podrazumeva da su svi meseci u istoj godini:

$ sort events $ sort -M events
Feb 10 2020 20:06 SOMETHING Jan 23 2020 10:42 SOMETHING
Feb 11 2020 20:06 SOMETHING Jan 29 2020 09:17 SOMETHING
Feb 12 2019 11:11 SOMETHING Feb 10 2020 20:06 SOMETHING
Feb 27 2020 23:05 SOMETHING Feb 11 2020 20:06 SOMETHING
Jan 23 2020 10:42 SOMETHING Feb 12 2019 11:11 SOMETHING <==
Jan 29 2020 09:17 SOMETHING Feb 27 2020 23:05 SOMETHING ⇐
Jun 26 2019 09:09 SOMETHING Jun 26 2019 09:09 SOMETHING

Sortiranje unazad

Da biste sortirali unazad, potrebno je da koristite opciju -r. Evo uporednog prikaza sortiranja unazad naziva meseci i human-friendly sortiranja:

$ sort -Mr months $ sort -hr numbers
Dec 5M
Nov 5k
Oct 500
Sep 44
Aug 11
Jul 9
Jun 4
May 1
Apr 0
Mar
Feb
Jan

Nasumično sortiranje

Da biste sortirali tekst u random sortiranju, koristićete opciju -R.

$ sort -R months $ sort -R numbers
Aug 500
Nov 4
Dec 44
Sep 5M
Apr 0
Jan 1
Jul 5K
Jun 11
May 9
Mar
Feb
Oct

Drugi način nasumičnog sortiranja je da da koristite shuf komandu. Evo nekoliko primera na podacija koje smo već koristili u ovom tekstu:
$ shuf months $ shuf numbers
Nov 0
Jun 4
May 500
Aug 5K
Apr 11
Dec 44
Jul 1
Feb 9
Mar 5M
Oct
Sep
Jan

Kao što smo na početku pomenuli, ovo su neke od najčešće korišćenih opcija na koje ćete možda najčešće nailaziti u svakodnevnom radu. O nekim drugim opcijama ćemo pisati u nekom od naših narednih tekstova.

Slični postovi:

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *