jednoduchý literárny "nástroj" na zvýšenie kvality textu

Sekcia: Programovanie 24.10.2012 | 10:39
Avatar Stanislav Hoferek Greenie, Manjaro, Q4OS, Lubuntu  Používateľ
Ahojte, zaujímam sa o vytvorenie jednoduchého skriptu, ktorý by dokázal upraviť text, či už v TXT alebo v HTML. Išlo by o nástroj, ktorý by odstránil cez sed (alebo iný spôsob vymieňania znakov) literárne chyby, teda niečo, čo bežne riešim s textom cez CTRL+H v grafickom textovom editore. Požiadavka je, aby to pokračovalo ďalej, aj ak sa daná chyba nenájde.

Schéma:

Echo "nastavujem správne bodky"
vymenenie "...." za "..."
vymenenie " ." za " ."
vymenenie ".A" za ". A"
vymenenie ".B" za ". B"

atď, ideálne aby to vytváralo meno-súboru_aktuálny-čas
    • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 24.10.2012 | 13:14
      Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
      Spustíš php a za tým názov skriptu. Keď to máš v php môžeš to používať aj na diaľku cez web, len by to chcelo ešte pár riadkov rozhrania :)

      <?php
      # Replace patern -> replace
      # GPLv3+ Bedna

      $patern[] = "/\.\.\.\./";
      $patern[] = "/ \./";
      $patern[] = "/(\.)(\S)/";

      $replace[] = "...";
      $replace[] = ".";
      $replace[] = "\1 \2";

      $content = file_get_contents('text.txt');

      $content = preg_replace($pattern, $replace, $content);

      file_put_contents('text.txt_'.date("Y-m-d_H_i_s"), $content);

      ?>
      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 24.10.2012 | 14:12
        Avatar Stanislav Hoferek Greenie, Manjaro, Q4OS, Lubuntu  Používateľ
        a mimo php, priamo cez .sh? síce webové by to bolo o dosť lepšie, to je pravda, len z toho som poriadny... nešikuľa :)
        • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 24.10.2012 | 14:19
          Avatar Stanislav Hoferek Greenie, Manjaro, Q4OS, Lubuntu  Používateľ
          myslíš niečo ako urobiť v html form, ťuknúť tam tlačidlo a ono to hodí výsledok do zadaného formu?

          niečo ako je na http://diakritika.rs-design.sk?
          • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 24.10.2012 | 16:07
            Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
            Áno.
            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 24.10.2012 | 16:06
          Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
          Ulož si to ako convert.php a spusti to php convert.php

          Som to napísal narýchlo v práci, ani neviem či to bude fungovať, otestuj. Samozrejme to potrebuje mať nainštalované php. Jasne že by to šlo aj cez sed, grep, ale tam neviem ako na diakritiku a prípadná možnosť rozšírenia o sofistikovanejšie funkcie.
          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 00:06
      Avatar fierce arch, bsd  Používateľ
      Trebars takto:
      sed -r 's|\.{2,}|...|g' < $1 | sed -re 's|(\.)([[:alpha:]])|\1 \2|g' >$1_$(date +"%Y-%m-%d_%H.%M")
      * prvy parameter je subor v ktorom hlada "chyby"
      - 2-n bodiek vymeni za ...
      - pattern ".[a-zA-Z]" substituuje za ". [a-zA-Z]"
      * vysledny subor bude mat na konci nazvu timestamp v uvedenom formate
      * urcite sa tam da vela veci este vychytat, ale tadialto by som sa uberal
      # \(- <br/> 456654 - linux registered user
      • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 00:38
        Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
        Len otázka ako sa Sed stavia k diakritike a ako identifikuje znakovú sadu? Vopred dík.
        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 13:36
          Avatar fierce arch, bsd  Používateľ
          Podla tohoto prispevku problem nastava ak je preferovany encoding prostredia odlisny od encodingu vstupu aj to len v istych pripadoch - v priklade na SO je jednosmerna kompatibilita interpretacie medzi kodovaniami UTF a ISO. Viac info tiez privitam :)

          U mna funguje priklad aj s diakritikou - UTF-8 vstup + $LANG=en_US.UTF-8.
          # \(- <br/> 456654 - linux registered user
      • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 13:41
        Avatar fierce arch, bsd  Používateľ
        Este drobne vylepsenie z pohladu spravovatelnosti:

        Vzory do rules.sed:
        s|\.{2,}|...|g
        s|(\.)([[:alpha:]])|\1 \2|g

        potom do skriptu uz len:
        sed -r -f rules.sed $1 >$1_$(date +"%Y-%m-%d_%H.%M")
        # \(- <br/> 456654 - linux registered user
        • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 28.10.2012 | 01:57
          Avatar Stanislav Hoferek Greenie, Manjaro, Q4OS, Lubuntu  Používateľ
          ako tu pridám ďalšie pravidlá? jemne som z toho jeleň, ale ako vymením jablko za hrušku?

          Na stole je jablko a slivka => Na stole je hruška a slivka

          s|\jablko|hruška|g ???
          • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 28.10.2012 | 02:05
            Avatar Stanislav Hoferek Greenie, Manjaro, Q4OS, Lubuntu  Používateľ
            aha, na toto sa dalo prísť jednoduchým pokus/omyl. a trochou gúglenia. Ako môže prerobiť "nejaké_písmeno keď" na "nejaké_písmeno, keď" ? Teda pridať čiarku, ale len tam, kde ešte čiarka nie je?
            • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 30.10.2012 | 21:14
              Avatar fierce arch, bsd  Používateľ
              Treba sa pozriet do regex-ov trocha: s|([[:alpha:]]) (ke[dď])|\1, \2|g
              # \(- <br/> 456654 - linux registered user
      • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 20:11
        Avatar Stanislav Hoferek Greenie, Manjaro, Q4OS, Lubuntu  Používateľ
        bash: $1: nejednoznačné presmerovanie

        som z toho inak dosť blbec :) môžeš tam niekde pridať vstup.txt a vystup.txt? alebo ako to presne je?
        • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 22:37
          pista   Návštevník
          skript si ulozis do nejakeho suboru, napr. hoferek.sh
          a do prikazoveho riadku napises
          ./hoferek.sh vstup,txt
        • Re: jednoduchý literárny "nástroj" na zvýšenie kvality textu 25.10.2012 | 23:24
          Avatar fierce arch, bsd  Používateľ
          1. vzory do suboru rules.sed
          2. sed prikaz napr. do lubovolneho sh skriptu - napr. skript.sh
          3. spustis ako ./skript.sh tvojvstup.txt
          4. vystup bude potom ulozeny do suboru tvojvstup.txt_timestamp
          # \(- <br/> 456654 - linux registered user