Sort: Difference between revisions
(21 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Sissejuhatus == | |||
'''sort''' programm sorteerib sisendi/faili sisu vastavalt väljadele - tühikute või muude märkidega eraldatud rea osad. | |||
*'''sort''' programm eraldab vaikimisi välju tühikute järgi | |||
*'''sort''' programmile on võimalik anda ette mõni muu eraldaja (näiteks ",", ";", ":" jne) kasutades '''-t''' võtit. | |||
*'''sort''' programm, ei muuda kunagi sorteeritava faili sisu. | |||
*'''sort''' programmi väljund trükitakse ekraanile juhul, kui ei suunata seda faili. | |||
*'''sort''' programmi kasutamisel ei pea ole root ehk juur kasutaja, va juhul kui väljundit soovitakse suunata kausta, kuhu tavakasutajal pole õigusi. | |||
== Süntaks == | == Süntaks == | ||
'''sort''' ''<võtmed> <faili nimi>'' | '''sort''' ''<võtmed> <faili nimi>'' | ||
'''sort''' käsul on kolm režiimi, vaikimisi, liitmine ('''-m''') ja kontroll ('''-c''') | |||
sort käsul on kolm režiimi, vaikimisi, liitmine ('''-m''') ja kontroll ('''-c''') | |||
*'''-c''' Kontrollib, kas sisendiks antud andmed on sorteeritud. Juhul kui ei ole sorteeritud, trükitakse veateade ning lõpetatakse programmi töö staatus 1-ga. | *'''-c''' Kontrollib, kas sisendiks antud andmed on sorteeritud. Juhul kui ei ole sorteeritud, trükitakse veateade ning lõpetatakse programmi töö staatus 1-ga. | ||
*'''-m''' Liidetakse sisendiks antud juba sorteeritud andmed. Andmete sorteerimist uuesti ei toimu. | *'''-m''' Liidetakse sisendiks antud juba sorteeritud andmed. Andmete sorteerimist uuesti ei toimu. | ||
===Põhilised võtmed=== | |||
*'''-b''' Ignoreeritakse väljadele või eraldajatele järgnevaid tühikuid. | *'''-b''' Ignoreeritakse väljadele või eraldajatele järgnevaid tühikuid. | ||
*'''-d''' Võetakse arvesse ainult tühikud, tähed ja numbrid [a-z A-Z 0-9]. | *'''-d''' Võetakse arvesse ainult tühikud, tähed ja numbrid [a-z A-Z 0-9]. | ||
Line 27: | Line 32: | ||
*'''--random-source=FAIL''' Võetakse juhuslikud bitid failist. | *'''--random-source=FAIL''' Võetakse juhuslikud bitid failist. | ||
===Muud võtmed=== | |||
*'''-C''' Sama nagu '''-c''' kuid ei väljastata esimest veaga rida. | *'''-C''' Sama nagu '''-c''' kuid ei väljastata esimest veaga rida. | ||
*'''-k POS1[,POS2]''' Võimaldab määrata väljad, mille järgi read sorteeritakse. POS1 tuleb asendada esimese eraldaja järjekorra numbriga reas alates millest on vaja sorteerida, POS2 tuleb asendada viimase eraldaja järjekorra numbriga reas kuni milleni on vaja sorteerida. Kui POS2 on määramata, siis vaikimisi sorteeritakse rea lõpuni. | *'''-k POS1[,POS2]''' Võimaldab määrata väljad, mille järgi read sorteeritakse. POS1 tuleb asendada esimese eraldaja järjekorra numbriga reas alates millest on vaja sorteerida, POS2 tuleb asendada viimase eraldaja järjekorra numbriga reas kuni milleni on vaja sorteerida. Kui POS2 on määramata, siis vaikimisi sorteeritakse rea lõpuni. | ||
Line 37: | Line 43: | ||
*'''-u''' Koos võtmega '''-c''' tehakse range järjestatuse kontroll. Vaikimisi, väljastatakse võrdsetest ridadest ainult üks. | *'''-u''' Koos võtmega '''-c''' tehakse range järjestatuse kontroll. Vaikimisi, väljastatakse võrdsetest ridadest ainult üks. | ||
*'''-z''' Lõpetab read reavahetuse asemel 0 baidiga. | *'''-z''' Lõpetab read reavahetuse asemel 0 baidiga. | ||
*'''--help''' Väljastatakse programmi '''sort''' abiinfo. | *'''--help''' Väljastatakse programmi '''sort''' abiinfo. | ||
*'''--version''' Väljastatakse programmi '''sort''' versiooon. | *'''--version''' Väljastatakse programmi '''sort''' versiooon. | ||
==Näited== | ==Näited== | ||
Line 58: | Line 61: | ||
... | ... | ||
</pre> | </pre> | ||
===Perekonnanime välja järgi sorteerimine=== | ===Perekonnanime välja järgi sorteerimine=== | ||
$ sort -k2 andmed.txt | $ sort -k2 andmed.txt | ||
Line 79: | Line 84: | ||
Peeter Uuno 90000 Põlva | Peeter Uuno 90000 Põlva | ||
</pre> | </pre> | ||
=== Sorteerimine numbri jada väärtuse järgi ridadel, kus eraldaja on ";" === | === Sorteerimine numbri jada väärtuse järgi ridadel, kus eraldaja on ";" === | ||
Line 100: | Line 106: | ||
Tõnu Tõnter 2500 Tartu | Tõnu Tõnter 2500 Tartu | ||
</pre> | </pre> | ||
=== /etc/passwd sorteerimine UID järgi === | |||
*'''Käsurida:''' | |||
<pre> | |||
sort -nt ":" -k3,3 /etc/passwd | |||
</pre> | |||
'''-n''' määrab ära, et sorteeritakse numbri väärtuse järgi, '''-t ":"''' määrab ära, et eraldaja on ":" ning -k3,3 määrab ära, et sorteeritakse ainult kolmanda välja järgi. | |||
*'''Väljund:''' | |||
<pre> | |||
root:x:0:0:root:/root:/bin/bash | |||
daemon:x:1:1:daemon:/usr/sbin:/bin/sh | |||
bin:x:2:2:bin:/bin:/bin/sh | |||
sys:x:3:3:sys:/dev:/bin/sh | |||
sync:x:4:65534:sync:/bin:/bin/sync | |||
games:x:5:60:games:/usr/games:/bin/sh | |||
man:x:6:12:man:/var/cache/man:/bin/sh | |||
lp:x:7:7:lp:/var/spool/lpd:/bin/sh | |||
mail:x:8:8:mail:/var/mail:/bin/sh | |||
... | |||
</pre> | |||
=== Sorteerimine soo, vanuse ning seejärel punktide järgi ja väljundi suunamine teise faili === | |||
*'''Sisend''' - fail ''andmed.txt'': | |||
<pre> | |||
Peeter Uuno M 27 57 | |||
Mari Jalakas N 36 43 | |||
Tõnu Tõnter N 39 85 | |||
Liis Lillekas M 42 67 | |||
Roland Reemus M 42 75 | |||
Taavi Taevatäht N 43 78 | |||
</pre> | |||
*'''Käsurida:''' | |||
<pre> | |||
$ sort +2 -4 +5 andmed.txt > sorteeritud.andmed.txt | |||
</pre> | |||
'''+2 -4''' tähendab, et alguses sorteeritakse soo ning vanuse järgi ning peale seda, võtmega '''+5''', sorteeritakse punktisumma järgi. '''> sorteeritud.andmed.txt''' käsurea lõpus määrab ära, et programmi väljund suunatakse faili sorteeritud.andmed.txt | |||
*'''Väljund''' - fail ''sorteeritud.andmed.txt'': | |||
<pre> | |||
Peeter Uuno M 27 57 | |||
Liis Lillekas M 42 67 | |||
Roland Reemus M 42 75 | |||
Mari Jalakas N 36 43 | |||
Tõnu Tõnter N 39 85 | |||
Taavi Taevatäht N 43 78 | |||
</pre> | |||
== Kokkuvõte == | |||
'''sort''' programm on väga hea programm andmete sorteerimiseks, käskude koostamine on lihtne ja loogiline. Saab sisendiks anda peaaegu ükskõik millise käsu väljundi ning seda sorteerida. Näiteks '''ls''', '''ps''', '''du'''. '''sort''' on ka võimaline sorteerima väga suuri faile, näiteks proxy või firewall logifaile. | |||
==Allikad/Lingid== | ==Allikad/Lingid== | ||
Line 108: | Line 169: | ||
*http://www.devdaily.com/unix/edu/examples/sort.shtml | *http://www.devdaily.com/unix/edu/examples/sort.shtml | ||
[[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | [[Category:Operatsioonisüsteemide administreerimine ja sidumine]] | ||
==Autor== | |||
Marko Valing, AK31, 2010/2011 |
Latest revision as of 10:34, 9 January 2011
Sissejuhatus
sort programm sorteerib sisendi/faili sisu vastavalt väljadele - tühikute või muude märkidega eraldatud rea osad.
- sort programm eraldab vaikimisi välju tühikute järgi
- sort programmile on võimalik anda ette mõni muu eraldaja (näiteks ",", ";", ":" jne) kasutades -t võtit.
- sort programm, ei muuda kunagi sorteeritava faili sisu.
- sort programmi väljund trükitakse ekraanile juhul, kui ei suunata seda faili.
- sort programmi kasutamisel ei pea ole root ehk juur kasutaja, va juhul kui väljundit soovitakse suunata kausta, kuhu tavakasutajal pole õigusi.
Süntaks
sort <võtmed> <faili nimi>
sort käsul on kolm režiimi, vaikimisi, liitmine (-m) ja kontroll (-c)
- -c Kontrollib, kas sisendiks antud andmed on sorteeritud. Juhul kui ei ole sorteeritud, trükitakse veateade ning lõpetatakse programmi töö staatus 1-ga.
- -m Liidetakse sisendiks antud juba sorteeritud andmed. Andmete sorteerimist uuesti ei toimu.
Põhilised võtmed
- -b Ignoreeritakse väljadele või eraldajatele järgnevaid tühikuid.
- -d Võetakse arvesse ainult tühikud, tähed ja numbrid [a-z A-Z 0-9].
- -f Kaotatakse sorteeritavates ridades tõstutundlikuse, st "b" ja "B" sorteeritakse kui võrdseid.
- -g Sorteeritakse numbrite jada väärtuse mitte järjekorra järgi. Toob kaasa ka võtme -b.
- -i Ignoreeritakse mitte-trükitavaid tähemärke.
- -M Kalendri järgi kuude sorteerimine, vastavalt hetke lokaadi(locale) järgi. Toob kaasa ka võtme -b.
- -h Sorteeritakse vastavalt inimloetavate numbrite järgi.
- -n Sorteeritakse välja arvutatud stringi numbriline väärtuse järgi. Toob kaasa ka võtme -b.
- -R Sorteeritakse juhuslikult väljade räsi järgi.
- -r Sorteeritud andmed väljastatakse vastupidises järjekorras, vaikimisi on väiksemad ees.
- -V Versiooni järgi sorteerimine.
- --sort=SONA Sorteerimine vastavalt SONA-le. general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
- --random-source=FAIL Võetakse juhuslikud bitid failist.
Muud võtmed
- -C Sama nagu -c kuid ei väljastata esimest veaga rida.
- -k POS1[,POS2] Võimaldab määrata väljad, mille järgi read sorteeritakse. POS1 tuleb asendada esimese eraldaja järjekorra numbriga reas alates millest on vaja sorteerida, POS2 tuleb asendada viimase eraldaja järjekorra numbriga reas kuni milleni on vaja sorteerida. Kui POS2 on määramata, siis vaikimisi sorteeritakse rea lõpuni.
- -l Sorteeritakse vastavalt hetke lokaadile(locale).
- -o FAIL Sorteeritud andmete väljund suunatakse faili, mitte standardväljundisse.
- -S SUURUS Määrab ära mälupuhvri suuruse vastavalt SUURUS väärtusele.
- -t ERALDAJA Võimaldab määrata väljade eraldaja.
- -T KATALOOG Programmi käivitamisel loodavad ajutised failid hoitakse kataloogis KATALOOG.
- -u Koos võtmega -c tehakse range järjestatuse kontroll. Vaikimisi, väljastatakse võrdsetest ridadest ainult üks.
- -z Lõpetab read reavahetuse asemel 0 baidiga.
- --help Väljastatakse programmi sort abiinfo.
- --version Väljastatakse programmi sort versiooon.
Näited
Protsessi tabeli sorteerimine PID välja järgi
$ ps aux | sort -nk2
-nk2 tähendab, et sorteeritakse teise välja (-k2) numbrilise väärtuse (-n) järgi.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 23844 2000 ? Ss 14:33 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 14:33 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 14:33 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0 ? S 14:33 0:00 [migration/0] root 5 0.0 0.0 0 0 ? S 14:33 0:00 [watchdog/0] ...
Perekonnanime välja järgi sorteerimine
$ sort -k2 andmed.txt
-k2 tähendab, et sorteeritakse teise välja (k2) järgi.
$ cat andmed.txt Peeter Uuno 90000 Põlva Marileen Jalakas 10000 Viljandi Tõnu Tõnter 25000 Tartu Lii Lillekas 35000 Kärdla Roland Reemus 61000 Tartu Taranatel Taevatäht 5200 Maardu $ sort -k2 andmed.txt Marileen Jalakas 10000 Viljandi Lii Lillekas 35000 Kärdla Roland Reemus 61000 Tartu Taranatel Taevatäht 5200 Maardu Tõnu Tõnter 25000 Tartu Peeter Uuno 90000 Põlva
Sorteerimine numbri jada väärtuse järgi ridadel, kus eraldaja on ";"
$ sort -t ";" -rnk3 andmed.txt -t ";" määrab ära, et eraldajaks on ";", -n määrab ära, et numbrid sorteeritakse väärtuse, mitte järjekorra järgi, -k3 määrab ära, et sorteeritakse kolmandat välja ning -r määrab, et sorteeritud andmed kuvatakse teises järjekorras, st suuremad ennem.
$ cat andmed.txt Peeter Uuno 90000 Põlva Mari Jalakas 10000 Viljandi Tõnu Tõnter 2500 Tartu Liis Lillekas 3500 Kärdla Roland Reemus 61000 Tartu Taavi Taevatäht 5200 Maardu $ sort -t ";" -rnk3 andmed.txt Peeter Uuno 90000 Põlva Roland Reemus 61000 Tartu Mari Jalakas 10000 Viljandi Taavi Taevatäht 5200 Maardu Liis Lillekas 3500 Kärdla Tõnu Tõnter 2500 Tartu
/etc/passwd sorteerimine UID järgi
- Käsurida:
sort -nt ":" -k3,3 /etc/passwd
-n määrab ära, et sorteeritakse numbri väärtuse järgi, -t ":" määrab ära, et eraldaja on ":" ning -k3,3 määrab ära, et sorteeritakse ainult kolmanda välja järgi.
- Väljund:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh ...
Sorteerimine soo, vanuse ning seejärel punktide järgi ja väljundi suunamine teise faili
- Sisend - fail andmed.txt:
Peeter Uuno M 27 57 Mari Jalakas N 36 43 Tõnu Tõnter N 39 85 Liis Lillekas M 42 67 Roland Reemus M 42 75 Taavi Taevatäht N 43 78
- Käsurida:
$ sort +2 -4 +5 andmed.txt > sorteeritud.andmed.txt
+2 -4 tähendab, et alguses sorteeritakse soo ning vanuse järgi ning peale seda, võtmega +5, sorteeritakse punktisumma järgi. > sorteeritud.andmed.txt käsurea lõpus määrab ära, et programmi väljund suunatakse faili sorteeritud.andmed.txt
- Väljund - fail sorteeritud.andmed.txt:
Peeter Uuno M 27 57 Liis Lillekas M 42 67 Roland Reemus M 42 75 Mari Jalakas N 36 43 Tõnu Tõnter N 39 85 Taavi Taevatäht N 43 78
Kokkuvõte
sort programm on väga hea programm andmete sorteerimiseks, käskude koostamine on lihtne ja loogiline. Saab sisendiks anda peaaegu ükskõik millise käsu väljundi ning seda sorteerida. Näiteks ls, ps, du. sort on ka võimaline sorteerima väga suuri faile, näiteks proxy või firewall logifaile.
Allikad/Lingid
- http://lowfatlinux.com/linux-sort-manual.html
- http://lowfatlinux.com/linux-sort.html
- http://ss64.com/bash/sort.html
- http://en.wikipedia.org/wiki/Sort_(Unix)
- http://www.devdaily.com/unix/edu/examples/sort.shtml
Autor
Marko Valing, AK31, 2010/2011