Úprava zákonů z portal.gov.cz ve Vimu

Už několikrát jsem potřeboval nějaký zákon a jediné místo, kde jsem ho dohledal byl Portál veřejné správy.

Bohužel se dají celé zákony stáhnout jen ve formátu TXT, který je navíc (pro mě) dost blbě formátovaný (zalomené odstavce, několik mezer na každém řádku a mezi slovy, …). Proto musím zdrojový TXT soubor trochu „předžvýkat“ než si ho upravím v textovém editoru (OpenOffice Writer).

Zdrojový TXT soubor je v kódování CP1250 (Windows-1250), takže jej nejprve převedu na UTF-8:

[bash]iconv -f CP1250 -t UTF-8 -o vystupni.txt zdrojovy.txt[/bash]

Pro další úpravu textu používám Vim:

  1. Odstranění mezer na začátcích řádků – :%s/^\ *//g
    vysvětlení příkazu: najdi (s) v celém dokumentu (%) začátek řádku s nějakými mezerami (^\ *) a nahraď je za ‚nic‘ – volba ‚g‘ říká, že se tato operaci může provést vícekrát na řádku (tady nemá moc smyslu, ale je tu ze zvyku)
  2. Odstranění vícenásobných mezer mezi slovy – :%s/\ \ \ */\ /g
    vysvětlení příkazu: najdi (s) v celém dokumentu (%) dvě a více mezer za sebou (\ \ \ *) a nahraď je jednou (\ )
  3. Zrušení zalomení (nový řádek) v rámci odstavce – :%s/\(.\)\n\(.\)/\1\ \2/g
    vysvětlení příkazu: najdi (s) v celém dokumentu (%) poslední znak řádku, když další řádek začíná také znakem (\.\n\.) a nový řádek nahraď mezerou (\1\ \2). Tady je využito formátování zdrojového souboru, kde jsou jednotlivé odstavce od sebe odděleny prázdným řádkem (takže pokud jsou u sebe dva řádky, pak patří k sobě). Aby jsme si nesmazali ten poslední a první znak, je třeba je uzavřít do skupiny ( \(\) ) a pak použít v druhé části zpět (\1).

Jak jednoduché 🙂

Teď si výsledný soubor otevřu ve Writeru a upravím si ho podle potřeby (okraje, velikost textu, …) než si ho vytisknu.

Napsat komentář