Stránka 1 z 1

Hromadná změna textu

Napsal: 04 led 2018 19:00
od sojkin626
Zdravím,
chtěl bych se zeptat, jestli někdo nezná nějaký šikovnější prográmek k hromadné změně textu, představuji si to tak, že budu chtít změnit kus textu, ale vícekrát a pokaždé za jiný text.
Takže například chci nahradit text, ale abych si mohl nadefinovat všechny variace textu, které budu chtít nahradit... no snad to někdo pochopil, nevím jak jinak bych to popsal... :-)
Předem moc díky za reakci...

Re: Hromadná změna textu

Napsal: 04 led 2018 19:31
od faraon
Jako třeba že do vzorového dopisu budeš vkládat různé adresy, jména a oslovení?

Re: Hromadná změna textu

Napsal: 04 led 2018 19:42
od sojkin626
No, aby jsme si trochu víc rozuměli...
Potřebuji hromadně najít několik úryvků textu (zadat více hledaných úryvků najednou), které bych chtěl nadefinovat a poté nahradit jedním textem.

Re: Hromadná změna textu

Napsal: 04 led 2018 20:16
od zeus
Tak daleko umela inteligence jeste neni, budes se muset spokojit s rucni praci, prip. makrem.

Re: Hromadná změna textu

Napsal: 04 led 2018 20:27
od Uziv00
Napiš si skript.
pc-help.cnews.cz/viewtopic.php?f=61&t=149036
pc-help.cnews.cz/viewtopic.php?f=39&t=106648
pc-help.cnews.cz/viewtopic.php?f=39&t=131647
pc-help.cnews.cz/viewtopic.php?f=35&t=157306

Re: Hromadná změna textu

Napsal: 04 led 2018 20:31
od faraon
Takže přesně naopak. Jako když chceš najít všechna sprostá slova a nahradit je nápisem (CENZURA) :lol:

Pokud ty nahrazované úryvky budou krátké, stačil by ti sed (Od roku 1974 8) ):

Kód: Vybrat vše

cat sprosty.txt | sed s/vole/PÍP/g | sed s/prdel/PÍP/g | sed s/debil/PÍP/g > slusny.txt


Pro náročnější úpravy je lepší awk, ale s tím se pracuje o dost složitěji.
Jinak makro ve Vimu nebo Emacsu to zpracuje během pár sekund.

Re: Hromadná změna textu

Napsal: 04 led 2018 21:30
od sojkin626
:smile: Super, děkuji... Měl bych ještě jeden dotaz, který je trochu mimo téma, šlo by v *.txt souboru náhodně prohodit obsah o několika řádcích? Například bych chtěl náhodně prohodit každý textový obsah o 4 řádcích a je úplně jedno, na jakém místě to skončí, potřebuji "zamíchat karty" :smile: ... Jedná se o jeden můj projekt. Díky moc.

Re: Hromadná změna textu

Napsal: 04 led 2018 22:32
od faraon
To už by asi nějaký skript chtělo, jak velký ten text je?

Re: Hromadná změna textu

Napsal: 04 led 2018 23:10
od Uziv00
Jistěže. Tohle zvládne bez problémů VBS. Má funkci čtení textu po řádcích a ukládání do txt souboru. Náhodné číslo generovat taky umí.

Re: Hromadná změna textu  Vyřešeno

Napsal: 05 led 2018 20:25
od faraon
Copak VBS, tohle zvládal namíchat BASIC na IBM-5150 s MS-DOSem 1.0 a jednou 160 KB disketou v roce 1981, když se tenhle počítač ještě nejmenoval PC:

Kód: Vybrat vše

10 DEFINT A-Z
20 DIM k$(999, 3)
30 PRINT "Mixer (C)2018 FARAON pro pc-help.cz"
40 PRINT "Sdileno pod licenci GNU GPL v3 nebo vyssi, viz gnu.org"

100 REM nacteni paklu
110 ON ERROR GOTO 510
120 OPEN "karty.txt" FOR INPUT AS #1
130      FOR k = 0 TO 999
140          FOR r = 0 TO 3
150              LINE INPUT #1, k$(k, r)
160          IF EOF(1) THEN GOTO 200
170      NEXT r, k
180      PRINT "Maximalni pocet!"
190 k = k - 1
200 CLOSE #1

300 REM Knuth micha karty
310 RANDOMIZE TIMER
320 FOR i = 0 TO k
330     n = INT(RND(1) * (k + 1))
340     FOR r = 0 TO 3
350         t$ = k$(i, r)
360         k$(i, r) = k$(n, r)
370         k$(n, r) = t$
380 NEXT r, i

400 REM ulozeni paklu
410 ON ERROR GOTO 530
420 OPEN "mix.txt" FOR OUTPUT AS #1
430      FOR i = 0 TO k
440          FOR r = 0 TO 3
450              PRINT #1, k$(i, r)
460      NEXT r, i
470 CLOSE #1
480 GOTO 540

500 REM ukonceni
510 PRINT "Nelze nacist karty!"
520 GOTO 540
530 PRINT "Nelze ulozit karty!"
540 PRINT "Program skoncil."
550 SYSTEM

Funguje to v GW-Basicu a QBasicu, takže by to měl schroustat i QB64 určený pro novější Wyndejsi ;-)

Program načte ze souboru karty.txt čtveřice řádků, každou čtveřici bere jako jednu kartu, ty zamíchá a vypíše do souboru mix.txt. Pořadí řádků ve čteřicích zůstává neměnné. Takhle jsi to myslel?

S ohledem na vlastnosti těch šestnáctibitových vykopávek je počet řádků omezen na 1000, délku řetězce zvládaly do 255 znaků, a celková možná velikost souboru se rovná maximální velikosti jimi využitelné paměti, což bylo něco málo přes 60 Kibibajtů. Na hraní a řízení robota svařujícího v NASA rakety to tehdy stačilo.

Re: Hromadná změna textu

Napsal: 14 led 2018 19:08
od sojkin626
Děkuji Faraon, vše funguje podle představ... :-)