Program na smázání 3+řádků za 1 nový řádek?

Místo pro všechny tipy na zajímavé prográmky a utilitky ke stažení

Moderátor: Mods_senior

Odpovědět
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od CZechBoY »

Zdravim,
existuje program který umí otevřít soubor(.log obsažen obyč text s UTF-8 kódováním) a přepsat v něm 3 a více nových řádků za 1? "\n\n\n"=>"\n"
Problém je v tom, že ten soubor má 3MB a některé programy ho neudokážou ani otevřít natož přepsat v něm obsah.
Pak je tu ještě oříšek, soubor který má 600MB

Neví někdo který program by se o to alespoň pokusil?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
skunkicz
Level 3.5
Level 3.5
Příspěvky: 653
Registrován: 26 pro 2009 13:53

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od skunkicz »

na otevření určitě gVim

http://www.vim.org/download.php

a co se týče toho programu......ten by se dal v c++ celkem pěkně napsat, ale nemám na to teď čásek...
Pracuji na (svobodném) operačním systému (jako koníček, nebude to velké a profesionální jako GNU) pro klony 386(486) AT.
- tohle napsal do usenetové diskuse Linus Torvalds dne 17. září 1991

NB: Intel Pentium DC, 3GB RAM, Ati Mobility Radeon HD4570, 250GB HDD - Windows 7 + Archlinux
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od CZechBoY »

v C# mi to psal out of memory, zkus to v tom C++ :-)
vim nepotřebuju, mám Win7 a tam je notepad, nechce se mi tahat linuxovej program :D nebo by zvládl nahradit nový řádky?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
skunkicz
Level 3.5
Level 3.5
Příspěvky: 653
Registrován: 26 pro 2009 13:53

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od skunkicz »

aha on to je jeden problém :D
Pracuji na (svobodném) operačním systému (jako koníček, nebude to velké a profesionální jako GNU) pro klony 386(486) AT.
- tohle napsal do usenetové diskuse Linus Torvalds dne 17. září 1991

NB: Intel Pentium DC, 3GB RAM, Ati Mobility Radeon HD4570, 250GB HDD - Windows 7 + Archlinux
Uživatelský avatar
Jan Pašek
Tvůrce článků
Příspěvky: 3701
Registrován: 27 led 2006 10:48
Bydliště: Plzeň

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od Jan Pašek »

Já sem tem skoro ..-ti letej strejda zeptám se a co sprostá dávka tudy by to nešlo?
začneš příkazem FOR /D dáš přečíst řádek a nasměruješ jej do samostatného souboru nad tímto souborem provedeš potřebné operace a výstup nasměruješ do konečného souboru. nakonec původní soubor smažeš.
Tohle je pouze nástin pokud je to pro tebe zajímavé pokusím se to rozpitvat detalněji jak moc to spěchá?
Jendův rozcestník (Odkazy, které jsem měl dříve v podpisu najdete v mém rozcestníku.) Jendovy novinky - Co je pro Vás odemne nového Pokud potřebujete mermomocí vědět na čem páchám PC kriminalitu sestavy jsou v profilu.
Uživatelský avatar
X
Elite Level 12.5
Elite Level 12.5
Příspěvky: 19360
Registrován: 22 kvě 2007 11:34
Kontaktovat uživatele:

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od X »

V programovacím jazyku (i prachobyčejný BASIC to dokáže) otevřít kanál a načítat jen po částech, nemusí se ládovat 600 MB, ale pozor co se provede, můžeš pomrvit soubor.
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7404
Registrován: 23 pro 2010 09:23

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od faraon »

Teda, co je to ten C# za jazyk že mu nestačí paměť? V obyčejném C jsem potřeboval 12 bajtů! Nojo, Microsoft se holt pozná :lol:

V Linuxu (a všech unixových systémech) by se to dalo vyřešit jedním řádkem v konzoli, krátký prográmek v BASICu by na to stačil také, ale co si vzpomínám, tak třeba ty microsoftí zvládnou načíst maximální délku řádku 255 B, a to by nemuselo v některých případech stačit. Takže bych to viděl asi takhle:

Kód: Vybrat vše

#include <stdio.h>

#define MAXIMUM 2
#define NAHRADA 1

int main(void)
{
    int c,n=0,r=0;

    while((c=getchar())!=EOF)
    {
        if('\n'==c)
        {
            ++n;
            if(n>MAXIMUM)
                n=NAHRADA;
        }
        else
        {
            if('\r'==c)
                r=1;
            else
            {
                while(n)
                {
                    if(r)
                        putchar('\r');
                    putchar('\n');
                    --n;
                }
                r=0;
                putchar(c);
            }
        }
    }
    while(n)
    {
        if(r)
            putchar('\r');
        putchar('\n');
        --n;
    }

    return 0;
}


Nezabýval jsem se nějakým otevíráním souborů, takže to musíš spustit z příkazového řádku a prohnat tím proud bytů:
radky.exe < soubor1.txt > soubor2.txt
Tím uděláš upravenou kopii, a když nebude něco fungovat tak si aspoň nepoškodíš ten původní soubor. Hlavně se nepokoušej zapisovat do toho samého ze kterého čteš, to fakt nefunguje.

Nahrazují se 3 a více konců řádků, takže tam kde je jen jeden řádek prázdný, ten zůstane, pokud bys chtěl změnit počet, stačí upravit konstantu MAXIMUM na požadovanou hodnotu, kolik konců řádků smí jít bezprostředně za sebou. Stejně tak si můžeš konstantou NAHRADA určit kolika řádky se má nahrazovat.

Ten program je trochu složitější, ale rozlišuje unixové konce řádků \n a windowsové \r\n, protože jinak by znak \r považoval za běžné písmeno a neodstranil by nic. Navíc, pokud by se v souboru vyskytovaly oba druhy (to se mi stává u starších textů z Windowsu, které dál doplňuji v Linuxu :wink:), tak je nechá tak jak jsou namíchané, nemění je.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
X
Elite Level 12.5
Elite Level 12.5
Příspěvky: 19360
Registrován: 22 kvě 2007 11:34
Kontaktovat uživatele:

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od X »

V BASICu jde načítat kanál postupně (opakováním), takže žádné omezení v tomto není ...
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od CZechBoY »

Zkusím ten program v c# ale už jen informativně ten 600MB soubor jsem smazal abych se tím už nezabýval :D stejně to jsou jen logy, které se hodí tak max týden od vytvoření
ale i tak díky
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7404
Registrován: 23 pro 2010 09:23

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od faraon »

X píše:V BASICu jde načítat kanál postupně (opakováním), takže žádné omezení v tomto není ...


To je samozřejmě pravda:

Kód: Vybrat vše

10 OPEN "soubor1" FOR RANDOM AS #1
20 OPEN "soubor2" FOR RANDOM AS #2
30   a$=" ":j=1
40   FOR i=1 TO LOF(1)
50     GET #1,a$
60     ...


Má to jednu podstatnou chybu, to volání systému je strašně pomalá funkce, takže by těch 600 mega přežvykoval půl dne. Kdysi jsem se s tím dost natrápil, a výsledek byl ten že jsem tam dal a$=SPACE$(1024) a pak to sám rozkopíroval přes FOR do pole kde jsem to zpracovával, vyšlo to i ve šnečím interpretu několikanásobně rychlejší! Prostě jsem si udělal vlastní cache. Větší už neměla znatelný vliv, i když sektory na disku jsem měl 32 KB.
Z tohohle důvodu jsem automaticky uvažoval o LINE INPUT a$, zvlášť že se jedná o řádkový soubor, ale protože M$ se roky nedokázal přenést přes svůj osmibitový stín, tak dvacet let ve všech verzích BASICu pořád používal pro načítání do řetězce rutinu, kterou Gates napsal v pětasedmdesátém roce pro Altair, a délku ukládal do jednoho bajtu. Ne že bych očekával že v logu se objeví řádek delší než těch 255 B, ale sám víš jak to u počítačů chodí - jediná věc na kterou se můžeš spolehnout je to, že se nemůžeš na nic spolehnout ;-)

Takže nakonec jsem zvolil Céčko, kvůli rychlosti a také kvůli tomu, že takový program bude potřebovat minimum paměti, navíc se dá bez problémů přeložit v jakémkoliv systému, na Windowsu třeba pomocí free DevC++. Jen mě tak napadá, když by to spustil příkazem type soubor1.txt | radky.exe, dokáže to už Windows spustit paralelně jako unixové systémy, nebo si tu rouru pořád ukládá na disk do dočasného souboru, který pak pustí do toho druhého programu, jak to fungovalo od pětaosmdesátého roku v DOSu? :o

P.S. Bavíme se doufám o BASICu, a ne o tom Visualpaskvilu, který s ním kromě názvu nemá nic společného? Ten jsem si vyzkoušel a s nedobrým pocitem okolo žaludku jsem se radši věnoval Pascalu...
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
X
Elite Level 12.5
Elite Level 12.5
Příspěvky: 19360
Registrován: 22 kvě 2007 11:34
Kontaktovat uživatele:

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od X »

Tak bohužel na PC neznám žádný BASIC, který by byl dobrý. Proti Sam Basicu a Master Basicu na počítači Sam Coupé (následník ZX Spectra) nesahá ani po kotníky. V SB + MB šlo psát strojový kód přímo v BASICu, také ho z něho pouštět a ten se vykonával přímo z umístění BASICu.
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7404
Registrován: 23 pro 2010 09:23

Re: Program na smázání 3+řádků za 1 nový řádek?

Příspěvek od faraon »

Sam znám jen z doslechu, ale ty popisy vypadaly dost úchvatně. Já jsem začínal na Didaktiku Gama, dlouho jsem neměl ani pořádný kazeťák, takže jsem si svoje výtvory nahrával na kotoučák :) Dodnes si myslím že můj textový editor napsaný v BASICu byl dost dobře vymyšlený program, čeština s vlastním fontem (za REM v řádku 0, zapínal se přes POKE) namapovaným přes SymbolShift na příslušná písmena, pokud by se program zastavil nějakou chybou, dal se znovu spustit jedním příkazem RETURN bez poškození dat v paměti, a spusta dalších fíčur... Na tom jsem se vyřádil :-D
Dneska používám Chipmunk Basic, sice má pár vad, ale oplácí to spoustou krásných funkcí, které mi ty časy připomínají, umí třeba GOTO x*1000, to mi pak v QBasicu krutě chybělo, a nebo automaticky převádí na číslo výraz vložený na vstup do číselné proměnné i s názvy proměnných! Jinak je to taková směska všech možných basiců, takže třeba smazat obrazovku tam jde nejenom CLS ale i příkazem HOME, jako na Apple II, a podobně. Umí dokonce i objekty, ale to jsem fakt ještě nepoužil.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Chyba příkazový řádek
    od zik9 » » v Windows 11, 10, 8...
    4 Odpovědi
    3156 Zobrazení
    Poslední příspěvek od zik9
  • Smazání HDD
    od FELINY » » v Vše ostatní (sw)
    9 Odpovědi
    4427 Zobrazení
    Poslední příspěvek od atari
  • Program na hledání poškozených souborů JPG
    od Rosta_Kolmix » » v Design a grafické editory
    2 Odpovědi
    6647 Zobrazení
    Poslední příspěvek od Minapark
  • Jaký program pro zpracování videa je nejlepší?
    od zuzana3 » » v Programy ke stažení
    7 Odpovědi
    7972 Zobrazení
    Poslední příspěvek od buchtik
  • Nový PC
    11 Odpovědi
    6886 Zobrazení
    Poslední příspěvek od petr22

Zpět na „Programy ke stažení“