Vypíšte Ahoj svet
echo 'Ahoj svet'
Vytvorte súbor pozdrav.txt
s textom “Ahoj svet”
echo 'Ahoj svet' > pozdrav.txt
V textovom editore vytvorte súbor vladcovia.txt
Ferdinand I., 1526 - 1564
Maximilián, 1564 - 1576
Rudolf, 1576 - 1608
Matej II., 1608 - 1619
Ferdinand II., 1619 - 1637
Gabriel Betlen, 1619 - 1621
Ferdinand III., 1637 - 1657
Leopold I., 1657 - 1705
Imrich Tököli, 1682 - 1685
Jozef I., 1705 - 1711
František II. Rákoci, 1705 - 1711
Karol III., 1711 - 1740
Mária Terézia, 1740 - 1780
Jozef II., 1780 - 1790
Leopold II., 1790 - 1792
František I., 1792 - 1835
Ferdinand V., 1835 - 1848
František Jozef I., 1848 - 1916
Karol IV., 1916 - 1918
Vypíšte obsah súboru vladcovia.txt
cat vladcovia.txt
Spočítajte počet riadkov v súbore vladcovia.txt
wc -l vladcovia.txt
Parameter -l
počíta riadky.
Alternatívne riešenie: cat
a wc
cat vladcovia.txt | wc -l
Toto je zbytočné useless use of cat
. Príkaz wc
dokáže zobrať jeden či viac súborov a spočítať ich riadky.
Vypíšte prvého známeho vládcu
head -n1 vladcovia.txt
Vypíšte posledného známeho vládcu
tail -n1 vladcovia.txt
Vypíšte len mená vládcov
cut -d, -f1 vladcovia.txt
Parametre:
-d
určuje jeden (!) znak reprezentujúci oddeľovač.-f
určuje poradové čísla políčok, ktoré chceme vypísať.
V príklade používame čiarku ako oddeľovač a vypisujeme prvý “stĺpec”, resp. prvé políčko.
Očíslujme vládcov
nl -s'. ' -w2 vladcovia.txt
Príkaz nl
čísluje riadky zo vstupu.
Parametre:
-s
určuje znaky oddeľujúce číslo od zvyšku riadku.-w
určuje šírku stĺpca s číslami.
V príklade oddeľujeme číslo od riadku pomocu bodky a medzery a číslam venujeme dva znaky v stĺpci.
Vypíšte vládcov, ktorí začali vládnuť v 17. storočí
grep ', 16' vladcovia.txt
Trik spočíva vo vhodnom ukotvení roku začatia vlády.
Vypíšte vládcov, ktorí nevládli v 17. storočí
grep -v ', 16' vladcovia.txt
Parameter -v
invertuje vyhľadávanie. Vypíštu sa riadky, ktoré nespĺňajú podmienku.
Vypíšte len mená vládcov usporiadané podľa abecedy
cut -d, -f1 vladcovia.txt | sort
Prvý stĺpec pošleme do rúry, kde ho zotriedime príkazom sort
.
Vypíšte unikátne mená vládcov
sort vladcovia.txt | cut -d ' ' -f 1 | uniq
Príkaz uniq
vyžaduje pre správne fungovanie utriedený vstup. Dodáme mu zoznam mien, teda slová z prvého “stĺpca”, kde oddeľujeme medzerou.
Riešenie má drobnú chybu, ktorú zámerne odignorujeme: Rudolf
, ktorý nemá poradové číslo, bude mať v mene čiarku.
Naformátujte vládcov tak, aby ste získali tri stĺpce oddelené čiarkami
tr - , < vladcovia.txt
Známe chyby:
- roky budú oddelené medzerou, čiarkou a medzerou, čo nemusí byť ideálne
Príkaz tr
neberie názov súboru z parametra. Možno však doňho
presmerovať obsah súboru cez <
.
Naformátujte vládcov tak, aby ste získali kultúrny zoznam oddelený čiarkami
tr - , < vladcovia.txt | sed 's/ *, /,/g'
Alternatívne riešeníe
cat vladcovia.txt | sed 's/ - /,/' | sed 's/, /,/'
Alternatívne riešeníe
sed -e 's/ - /,/' -e 's/, /,/' vladcovia.txt
Vypíšte vládcov a dĺžku ich vlády
cat vladcovia.txt | tr - , | awk -F, '{ print $1, $3-$2 }'
Alternatívne riešenie: komplexný oddeľovač v awk
awk -F'[,-]' '{ print $1, $3-$2 }' vladcovia.txt
Usporiadajte vládcov podľa dĺžky vládnutia
awk -F'[,-]' '{ print $1 "," $3-$2 }' vladcovia.txt | sort -k2n -t,
Sort má parametre:
-t
určuje oddeľovač položiek (stĺpcov)-k
určuje položku a dátový typ, poda ktorej sa triedi
V našom prípade oddeľujeme čiarkou (-t,
) a triedime podľa druhého políčka (-k2
), ktoré je číselné (numerické, n
).
Sumár
V texte sme použili nasledovné príkazy:
- echo: slová oddelené medzerou na štandardný výstup
- cat: výpis súboru
- wc: počet riadkov / slov / znakov / bajtov
- head: prvých N riadkov / znakov / bajtov
- tail: posledných N riadkov / znakov / bajtov
- cut: vysekávanie položiek podľa jednoznakového oddeľovača
- grep: vyhľadávanie a filtrovanie podľa regulárneho výrazu
- awk: vylepšený
cut
s podporou viacerých oddeľovačov a pokročilými funkciami nad stĺpcami - nl: počítanie riadkov
- sed: nahrádzanie textu v riadkoch
- tr: nahrádzanie jednotlivých znakov, mazanie znakov
- uniq: rušenie duplicitných riadkov
- sort: triedenie podľa položiek