UNIX vznikl původně pro potřebu patentového oddělení firmy AT&T, pro zpracování textů. Tomu odpovídá velké množství nástrojů pro tento druh práce. Základním nástrojem je shell a jeho schopnost vatvářet kolony příkazů. To umožňuje průběžné zpracování textu kdy každý program v koloně jako stroj na běžícím pásu provede svoji operaci s textem a výsledek pošle ke zpracování následujícímu programu.
$
dpkg -L coreutils
Krátký přehled některých programů pro zpracování textu
Příkaz cat je určen pro čtení textu ze souboru. Je to filtr který neprovádí vůbec nic, tedy to co přečte na vstupu pošle beze změny na výstup. Umožňuje nám ovšem spojovat soubory. Uvedeme-li jako parametr seznam souborů jsou tyto postupně poslány na standardní výstup.
$
cat soubor1 soubor2 soubor3 > vysledek
Příkaz tac funguje velmi podobně s tím rozdílem že soubor čte řádek po řádku od konce. Obrátí tedy pořadí řádků.
$
tacprvní řádek druhý řádek třetí řádek
Ctrl+Dtřetí řádek druhý řádek první řádek
Provádí jednoduchý překlad/transformaci při které umožňuje nahrazovat znaky. Nahrazuje znaky 1 ku jedné. Například následujícíc zápis provede změnu všech malých znaků za velké.
$
tr 'a-z' 'A-Z'
How do I sort a file in place using bash shell?
Setřídí řádky na vstupu podle zadaného kritéria. Kritériem je určení podle které části řádku se má třídit. Zdali se má třídit číselně či abecedně a také můžeme třídit obráceně. Program má řadu parametrů ze kterých bych připoměl -n
jenž třídí čísleně, takže 1 se řadí před 10.
Při třídění je třeba mít v patrnosti jaké je nastavné prostředí. Pokud se nám řadí číslice až za písmena, mám čské prostředí. Chceme-li číslice před písmeny, tedy pořadí (00, 01, 0A) stačí nastavit proměnnou LANG
$
LANG=C sort soubor
Tee podle písmene 'T' slouží jako odbočka v koloně příkazů. Funguje tak že co je na vstupu pošle na výstup stejně jako příkaz cat ale navíc to ještě zapíše do souboru.
$
…|tee meziprodukt|…
Zalamování dlouhých řádků v souboru. Toto je jednoduchý nástroj, který rozdělí všechny dlouhé řádky podle zadaných kriterií. Jsou to maximální délka (-w 24
) rozdělovat jen v mezeře mezi slovy (-s
).
Nesrovná se s češtinou v UTF-8 kódování.
http://www.ibm.com/developerworks/aix/library/au-spunix_pipeviewer/?S_TACT=105AGY20&S_CMP=HP
Pipe Viewer je program který měří informace protékající rourou a umožnuje zobrazovat jejich aktuální hodnoty. Dovede například vytvářet teploměry ukazující stav rozpracovanosti.
Nejsilnější stránkou je možnost kombinovat příkazy do kolon. Můžeme například očíslovat řádky ve zdrojovém souboru, zalomit aby se vešly na stránku (na šířku stránky či sloupce) a hotové umístnit třeba ve dvou sloupcích na papír s tím že máme ještě očíslované stránky.
$
cat source.c| nl | fold -w64 | pr -2 -w136 >k-tisku
Velmi jednoduché dvousloupcové sazby textu dosáhneme například takto:
$
cat text| fmt -w 24 | pr -2 -w 52
Z mých pokusů jsem si všiml že český text kódovaný v utf-8 se neformátuje správně. V první chvíli jsem to obešel překódováním do jiného kódování které nepoužívá vícebytové kódování.
$
LANG=cs_CZ recode utf8..l2 <text|fmt -w25|pr -2 -w54|recode l2..utf8
Ale pro správný provoz to bude vyžadovat jěště nějaké vyladění.