Пређи на садржај

Sort (Unix)

С Википедије, слободне енциклопедије

U Operativnim sistemima zasnovanim na Unix-u sort je standardni program komandne linije koji štampa linije ulazne vrednosti koja se zadaje preko komandne linije u uređenom poretku. Sortiranje se bazira na jednom ili više ključeva koji se uzimaju iz svake linije ulazne vrednosti. Po difoltu, celo ulaz se uzima kao ključ. Prazno polje je podrazimevan separator.

Sortiranje po abecedi

[уреди | уреди извор]
$ cat phonebook
Smith, Brett     555-4321
Doe, John        555-1234
Doe, Jane        555-3214
Avery, Cory      555-4132
Fogarty, Suzie   555-2314

$ sort phonebook
Avery, Cory      555-4132
Doe, Jane        555-3214
Doe, John        555-1234
Fogarty, Suzie   555-2314
Smith, Brett     555-4321

Sortiranje po broju

[уреди | уреди извор]

-n opcija sortira po numeričkoj vrednosti:

$ du /bin/* | sort -n
4       /bin/domainname
24      /bin/ls
102     /bin/sh
304     /bin/csh

Sortiranje direktorijuma po veličini dokumenata

[уреди | уреди извор]
$ ls -s | sort -n
  96 Nov1.txt
 128 _arch_backup.lst
 128 _arch_backup.lst.tmp
1708 NMON

U starijim verzijama programa, +1 opcija je sortirala na osnovu druge kolone inputa (+2 za treću, itd.). Ovo je zastarelo, i umesto toga -k opcija postiže istu stvar ("-k 2" za drugu kolonu):

$ cat zipcode
Adam  12345
Bob   34567
Joe   56789
Sam   45678
Wendy 23456
   
$ sort -nk 2 zipcode
Adam  12345
Wendy 23456
Bob   34567
Sam   45678
Joe   56789

Sortiranje na više polja

[уреди | уреди извор]

Opcija -k m,n sortira određeno polje (početak na m, kraj na n):

$ cat quota
bob 1000
an 1000
chad 1000
don 1500
eric 5000
fred 2000

$ sort -k2n,2 -k1,1 quota
an 1000
bob 1000
chad 1000
don 1500
fred 2000
eric 5000

-k2 je za drugu kolonu, n je za sortiranje po numeričkoj vrednosti.

Sortiranje datoteke koja je delimitirana pipe-om

[уреди | уреди извор]
$ sort -t'|' -k2 zipcode
Adam|12345
Wendy|23456
Bob|34567
Sam|45678
Joe|56789

Sortiranje datoteke koja je delimitirana tabulatorom

[уреди | уреди извор]

Sortiranje datoteke sa vrednostima odvojenim tabulatorom zahteva da se navede karakter za tabulator kao delimiter kolone. U ovoj ilustraciji je korišćena dolar-navodnik notacija shell-a[1][2] kako bi se označio tabulator kao C "escape" sekvenca.

$ sort -k2,2 -t $'\t' phonebook 
Doe, John 555-1234
Fogarty, Suzie 555-2314
Doe, Jane 555-3214
Avery, Cory 555-4132
Smith, Brett 555-4321

Sortiranje u opadajućem poretku

[уреди | уреди извор]

Opcija -r obrće vrednost sort-a:

$ sort -nrk 2 zipcode
Joe   56789
Sam   45678
Bob   34567
Wendy 23456
Adam  12345

Nasumično sortiranje

[уреди | уреди извор]

GNU implementacija ima "--random-sort" opciju.

Algoritam za sortiranje

[уреди | уреди извор]

Implementacija u "GNU Core Utilities", koja se koristi u Linux-u, koristi algoritam sortiranja objedinjavanjem.

  1. ^ „The GNU Bash Reference Manual, for Bash, Version 4.2: Section 3.1.2.4 ANSI-C Quoting”. Free Software Foundation, Inc. 28. 12. 2010. Приступљено 1. 2. 2013. „Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. 
  2. ^ „KornShell FAQ”. Архивирано из оригинала 22. 05. 2013. г. Приступљено 1. 2. 2013. „The $'...' string literal syntax was added to ksh93 to solve the problem of entering special characters in scripts. It uses ANSI-C rules to translate the string between the '...'. 

Spoljašnje veze

[уреди | уреди извор]