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

Domácí úkoly

  1. Znovu vyřešte domácí úkol z minulého cvičení, ale tentokrát čistě pomocí prostředků shellu. Konkrétně s výjimkou nástrojů grep a sed smíte použít vše, co jsme si na cvičení zatím ukazovali. (1 bod)

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

  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)
            
    #!/bin/bash
    
    sed '${p;x}' | sed -n '/^.\+$/{H;d};{x;s/^$//;t;s/\n/ /g;s/^ //;p}'
            
          

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