Úvod do UNIXu – cvičení 22. 4. 2016

Domácí úkoly

  1. Uvažujte text, ve kterém jsou odstavce oddělené libovolným počtem prázdných řádků. Napište shellový skript, který takový text očekává na standardním vstupu a každý odstavec v něm obsažený spojí do jednoho separátního řádku. Jednotlivé řádky odstavce oddělujte znakem mezery. Prázdné řádky ze vstupu odstraňte. Viz příklad níže.
    Pozor, vaše řešení smí využívat pouze nástroj sed a žádné jiné nástroje nejsou dovoleny. Můžete jej však samozřejmě v rámci vašeho skriptu spustit vícekrát. Inspiraci a různé tipy a triky naleznete např. v užitečných jednořádkových skriptech. Také si pročtěte manuálovou stránku, kde se zaměřte mimo jiné na "hold space", který budete pravděpodobně potřebovat.
            
    # chci, aby váš skript spuštěný např. na následující vstup
    ./ukol.sh <<END
    
    
    1
    2
    3
    
    
    a
    b
    
    c
    
    END
    
    # měl přesně tento výstup
    1 2 3
    a b
    c
            
          
    Úkol je těžký, protože si budete muset sed skutečně osahat. Doporučuji úkol udělat nebo se o něj alespoň pokusit, protože tak prozkoumáte všechny zásadní schopnosti, které tento opravdu důležitý nástroj má. (2 + 2 body)

Řešení domácích úkolů z minula

  1. Vymyslete základní nebo rozšířený regulární výraz pro nástroj grep, který popisuje obecně validní adresu protokolu IPv4. Poté napište pomocí něj příkaz, který ze souboru s IPv4 adresami vypíše pouze validní adresy. (1 bod)
  2. Úplně ideální bude, pokud se váš regulární výraz navíc popasuje i s adresou "192.168.07.200", kterou nepovažuji kvůli 3. bajtu za validní. Správný výstup tak bude mít 5, resp. 4 řádky. (+ 1 bod)
            
    # jedno z mnoha správných řešení obou úkolů naráz mi zaslal Honza Knížek
    
    grep -E '^((2([0-4][0-9]|5[0-5])|1[0-9]{2}|[1-9][0-9]|[0-9])\.){3}(2([0-4][0-9]|5[0-5])|1[0-9]{2}|[1-9][0-9]|[0-9])$'
    
    # číslo z rozsahu 0-255:   '(2([0-4][0-9]|5[0-5])|1[0-9]{2}|[1-9][0-9]|[0-9])'
    # adresa složená z čísel:  '(číslo\.){3}číslo'
            
          

Příkazy a úkoly na cvičení