Seminár k operačným systémom: Bash I.

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

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *