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

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 17 led 2011 17:27

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

Reklama
Uživatelský avatar
skunkicz
Level 3.5
Level 3.5
Příspěvky: 653
Registrován: prosinec 09
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod skunkicz » 17 led 2011 17:30

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: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 17 led 2011 17:40

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: prosinec 09
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod skunkicz » 17 led 2011 19:34

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ů
Level 6.5
Level 6.5
Příspěvky: 3701
Registrován: leden 06
Bydliště: Plzeň
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Jan Pašek » 17 led 2011 20:07

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: květen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod X » 17 led 2011 20:17

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: 7359
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 18 led 2011 04:12

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: květen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod X » 18 led 2011 19:56

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: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 19 led 2011 16:12

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: 7359
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 20 led 2011 03:58

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: květen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod X » 21 led 2011 01:15

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: 7359
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 22 led 2011 07:19

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)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Kopírování řádků s funkcí když Příloha(y)
    od Martyn20 » 20 črc 2023 16:50 » v Kancelářské balíky
    3
    1924
    od Melvidor Zobrazit poslední příspěvek
    21 črc 2023 08:41
  • Ukotvení prvního a posledního řádku v tabulce.
    od Kopusek » 13 pro 2023 10:50 » v Kancelářské balíky
    2
    1549
    od Kopusek Zobrazit poslední příspěvek
    14 pro 2023 08:55
  • excel text na konec více řádků najednou Příloha(y)
    od Myerina » 03 led 2024 11:51 » v Kancelářské balíky
    5
    920
    od Zivan Zobrazit poslední příspěvek
    04 led 2024 09:42
  • Nový poskytovatel internetu - nový modem
    od HarryS21 » 28 bře 2024 19:07 » v Sítě - hardware
    4
    1169
    od HarryS21 Zobrazit poslední příspěvek
    29 bře 2024 19:48
  • Program ONVIF, IP cam
    od NIESRA » 16 pro 2023 20:21 » v Vše ostatní (sw)
    6
    904
    od petr22 Zobrazit poslední příspěvek
    17 pro 2023 09:11

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host