Portál AbcLinuxu, 19. července 2025 06:00


Dotaz: Zalomení prostého textu s odrážkami

xkucf03 avatar 27.9.2019 00:51 xkucf03 | skóre: 49 | blog: xkucf03
Zalomení prostého textu s odrážkami
Přečteno: 289×
Odpovědět | Admin

Dělám k jednomu programu kromě XHTML a PDF výstupu i výstup v prostém textu.

Ten text tedy už vygenerovaný mám, ale potřeboval bych ho zalomit na 80 znacích, aby se četl dobře v terminálu. Tohle skoro funguje:

cat vstup.txt | fmt -w 80 -s > výstup.txt

Akorát je problém v tom, že mám v tom textu odrážky a generuje mi to:

text odstavce

  - odrážka …
  pokračování textu orážky
  - odrážka …
  pokračování textu orážky

ale já bych tam chtěl mít tohle:

text odstavce

  - odrážka …
    pokračování textu orážky
  - odrážka …
    pokračování textu orážky

Zatím jsem tam dal tuhle prasárnu:

cat vstup.txt | fmt -w 74 -s | sed -E 's/( +)([^- ])/\1 \2/g' > výstup.txt

Což sice dává přijatelný výsledek, ale není to úplně ono, protože z prvního řádku to ukousne pár znaků (na tom řádku toho mohlo být více a zalomí se zbytečně brzy) a taky musím znát předem maximální počet zanoření odrážek (v tomhle případě 3: 80-3×2 = 74).

Čistě bych to uměl tak, že bych do toho vstup.txt negeneroval odrážky jako „ - “ ale jako nějakou speciální značku na samostatný řádek a pak bych tam ty „ - “ doplnil až dodatečně (až po zalomení řádků) třeba AWKčkem.

Napadá váš něco jednoduššího a hezčího?

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 27.9.2019 03:44 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Zalomení prostého textu s odrážkami
Odpovědět | | Sbalit | Link | Blokovat | Admin
Koukni na Pandoc. Nebo vezmi ten HTML výstup a pošli ho do Lyxu.
Hello world ! Segmentation fault (core dumped)
xkucf03 avatar 28.9.2019 00:07 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zalomení prostého textu s odrážkami

Zajímá mě spíš co nejjednodušší1 řešení konkrétního problému. Asi to bude chtít napsat patch pro fmt.

[1] z hlediska závislostí, komplexity

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
28.9.2019 11:05 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Zalomení prostého textu s odrážkami
Odpovědět | | Sbalit | Link | Blokovat | Admin
Docela pěkný výstup vygeneruje Lynx, ale z hlediska závislostí to není také moc košer.
   #[1]Obsah stránky

   dnes 11:03 [2]Přihlášení, [3]Registrace
   Hledávání ______________ Hledej [4]Nápověda
   _______________________________________________________________________

                 Dotaz: Zalomení prostého textu s odrážkami

   xkucf03 avatar včera 00:51 [5]xkucf03 | skóre: 48 | blog: [6]xkucf03
   Zalomení prostého textu s odrážkami
   Přečteno: 124×
   [7]Odpovědět | [8]Admin

   Dělám k jednomu programu kromě XHTML a PDF výstupu i výstup v prostém
   textu.

   Ten text tedy už vygenerovaný mám, ale potřeboval bych ho zalomit na 80
   znacích, aby se četl dobře v terminálu. Tohle skoro funguje:

     cat vstup.txt | fmt -w 80 -s > výstup.txt

   Akorát je problém v tom, že mám v tom textu odrážky a generuje mi to:
text odstavce

  - odrážka …
  pokračování textu orážky
  - odrážka …
  pokračování textu orážky

   ale já bych tam chtěl mít tohle:
text odstavce

  - odrážka …
    pokračování textu orážky
  - odrážka …
    pokračování textu orážky

   Zatím jsem tam dal tuhle prasárnu:

     cat vstup.txt | fmt -w 74 -s | sed -E 's/( +)([^- ])/\1 \2/g' >
     výstup.txt

   Což sice dává přijatelný výsledek, ale není to úplně ono, protože
   z prvního řádku to ukousne pár znaků (na tom řádku toho mohlo být více
   a zalomí se zbytečně brzy) a taky musím znát předem maximální počet
   zanoření odrážek (v tomhle případě 3: 80-3×2 = 74).

   Čistě bych to uměl tak, že bych do toho vstup.txt negeneroval odrážky
   jako „ - “ ale jako nějakou speciální značku na samostatný řádek a pak
   bych tam ty „ - “ doplnil až dodatečně (až po zalomení řádků) třeba
   AWKčkem.

   Napadá váš něco jednoduššího a hezčího?
   Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají
   směr. [9]Frantovo.cz, [10]SQL-DK, [11]Relational pipes

   [INS: :INS]

   Nástroje: [12]Začni sledovat (0) [13]?Zašle upozornění na váš email při
   vložení nového komentáře.

Odpovědi

   Josef Kufner avatar včera 03:44 [14]Josef Kufner | skóre: 69
   Rozbalit Rozbalit vše Re: Zalomení prostého textu s odrážkami
   [15]Odpovědět | | Sbalit | [16]Link | [17]Blokovat | [18]Admin

   Koukni na Pandoc. Nebo vezmi ten HTML výstup a pošli ho do Lyxu.
   Hello world [19]! Segmentation fault (core dumped)
   xkucf03 avatar dnes 00:07 [20]xkucf03 | skóre: 48 | blog: [21]xkucf03
   Rozbalit Rozbalit vše Re: Zalomení prostého textu s odrážkami
   [22]Odpovědět | | Sbalit | [23]Výše | [24]Link | [25]Blokovat |
   [26]Admin

   Zajímá mě spíš co nejjednodušší^1 řešení konkrétního problému. Asi to
   bude chtít napsat patch pro fmt.

   [[1] z hlediska závislostí, komplexity ]
   Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají
   směr. [27]Frantovo.cz, [28]SQL-DK, [29]Relational pipes

   [30]Založit nové vlákno • [31]Nahoru

   [32]Tiskni Sdílej: [33]Linkuj [34]Jaggni to [35]Vybrali.sme.sk
   [36]Google [37]Del.icio.us [38]Facebook
   _______________________________________________________________________

   Anketa
   Kdy jste naposledy viděli počítač s připojeným běžícím CRT monitorem?
   (*) tento týden (20%) **
   ( ) tento měsíc (4%)
   ( ) tento rok (11%) *
   ( ) během posledních 5 let (39%) ****
   ( ) dříve (25%) ***
   ( ) nikdy (2%)
   Celkem 259 hlasů [39]Komentářů: 22
   Hlasuj

  Služby

   [40]Poradna [41]FAQ [42]Hardware [43]Software [44]Články [45]Učebnice
   [46]Blogy [47]Slovník [48]Osobnosti [49]Ankety [50]Ovladače [51]Bazar
   [52]Práce

  O serveru

   [53]Požadavky [54]Bugzilla [55]RSS a PDA [56]Propagace [57]Tým
   AbcLinuxu [58]Pište pro abclinuxu ISSN 1214-1267

References

   1. http://www.abclinuxu.cz/poradna/linux/show/449345#obsah
   2. http://www.abclinuxu.cz/Profile;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=login
   3. http://www.abclinuxu.cz/EditUser;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=register
   4. http://www.abclinuxu.cz/doc/napoveda/hledani
   5. http://www.abclinuxu.cz/lide/xkucf03
   6. http://www.abclinuxu.cz/blog/xkucf03
   7. http://www.abclinuxu.cz/EditDiscussion/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=add&dizId=239806&threadId=0
   8. http://www.abclinuxu.cz/EditRequest/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=comment&threadId=0
   9. https://blog.frantovo.cz/
  10. https://sql-dk.globalcode.info/
  11. https://relational-pipes.globalcode.info/
  12. http://www.abclinuxu.cz/EditMonitor/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=start
  13. http://www.abclinuxu.cz/poradna/linux/show/449345
  14. http://www.abclinuxu.cz/lide/jkufner
  15. http://www.abclinuxu.cz/EditDiscussion/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=add&dizId=239806&threadId=1
  16. http://www.abclinuxu.cz/poradna/linux/show/449345#1
  17. http://www.abclinuxu.cz/EditUser;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=toBlacklist&bUid=2405&url=/show/449345#1
  18. http://www.abclinuxu.cz/EditRequest/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=comment&threadId=1
  19. http://josef.kufner.cz/
  20. http://www.abclinuxu.cz/lide/xkucf03
  21. http://www.abclinuxu.cz/blog/xkucf03
  22. http://www.abclinuxu.cz/EditDiscussion/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=add&dizId=239806&threadId=2
  23. http://www.abclinuxu.cz/poradna/linux/show/449345#1
  24. http://www.abclinuxu.cz/poradna/linux/show/449345#2
  25. http://www.abclinuxu.cz/EditUser;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=toBlacklist&bUid=12329&url=/show/449345#2
  26. http://www.abclinuxu.cz/EditRequest/449345;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=comment&threadId=2
  27. https://blog.frantovo.cz/
  28. https://sql-dk.globalcode.info/
  29. https://relational-pipes.globalcode.info/
  30. http://www.abclinuxu.cz/EditDiscussion;jsessionid=psz4iwoi4zdughmg23g9yo8j?action=add&threadId=0&dizId=239806&rid=449345
  31. http://www.abclinuxu.cz/poradna/linux/show/449345#www-abclinuxu-cz
  32. http://www.abclinuxu.cz/poradna/linux/show/449345?varianta=print
  33. http://www.abclinuxu.cz/sdilej?rid=449345&s=link
  34. http://www.abclinuxu.cz/sdilej?rid=449345&s=jag
  35. http://www.abclinuxu.cz/sdilej?rid=449345&s=sme
  36. http://www.abclinuxu.cz/sdilej?rid=449345&s=google
  37. http://www.abclinuxu.cz/sdilej?rid=449345&s=del
  38. http://www.abclinuxu.cz/sdilej?rid=449345&s=fb
  39. http://www.abclinuxu.cz/ankety/crt-monitor-2019
  40. http://www.abclinuxu.cz/poradna
  41. http://www.abclinuxu.cz/faq
  42. http://www.abclinuxu.cz/hardware
  43. http://www.abclinuxu.cz/software
  44. http://www.abclinuxu.cz/clanky
  45. http://www.abclinuxu.cz/ucebnice
  46. http://www.abclinuxu.cz/blog
  47. http://www.abclinuxu.cz/slovnik
  48. http://www.abclinuxu.cz/kdo-je
  49. http://www.abclinuxu.cz/ankety
  50. http://www.abclinuxu.cz/ovladace
  51. http://www.abclinuxu.cz/bazar
  52. http://www.abcprace.cz/
  53. http://www.abclinuxu.cz/pozadavky;jsessionid=psz4iwoi4zdughmg23g9yo8j
  54. http://bugzilla.abclinuxu.cz/
  55. http://www.abclinuxu.cz/napoveda/rss-a-jine-pristupy
  56. http://www.abclinuxu.cz/portal/propagace
  57. http://www.abclinuxu.cz/clanky/show/44049
  58. http://www.abclinuxu.cz/clanky/novinky/pojdte-psat-pro-abclinuxu.cz
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.