Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Pokročilá úprava textu

Prosím o radu. Jak docílit následujícího? Je to možné v programu PSPad?
Textový soubor *.txt obsahuje text v cca desítkách tisíc řádků.
Cílem je automatizovaně projít veškerý text ve všech řádcích a vymazat všechny řádky které obsahují například tyto řetězce se shodnou délkou znaků.

Jedná se o řetězce délky 8 znaků **.*.***

A
01.A.001
B
01.A.008
01.A.009
C
13.E.259
D
18.G.008
E
F

Po odfiltrování a vymazání bude výsledek:
A
B
C
D
E
F

Předmět Autor Datum
Zalezi ti na poradi? protoze pokud ne muzes je seradit podle delky a pak smaza rozmezi ktere te zaji…
vojmar 21.03.2018 18:43
vojmar
Pořadí řádků je nutné zachovat. Nesmí dojít k jejich pomíchání.
Text 21.03.2018 18:47
Text
Přečti si něco o regulárních výrazech.
dsa 21.03.2018 18:46
dsa
Možná to je trochu kostrbaté řešení, ale jsem přesvědčený, že by fungovalo: Soubor načíst do Excelu,…
host 21.03.2018 19:04
host
má li to desetitisíce řádků, postup přes textový editor prověří rychlost zpracová textu... pspad as…
korin 21.03.2018 19:12
korin
Tak se klidně vyblij. Ne každý ovládá regulární výrazy nebo příkazový řádek, tak jsem jen nastínil j…
host 21.03.2018 19:39
host
Potřebuji přepsat regulární výraz pro **.*.*** kdy hvězdička je buď číslice nebo písmeno, viz zadání…
Text 21.03.2018 19:40
Text
[\w\w]\.[\w]\.[\w\w\w] To je problém to najít? https://www.regularnivyrazy.info/regularni-vyrazy-za…
dsa 21.03.2018 22:07
dsa
V odkazu uvedené jsem četl hned včera, jak o tom padla zmínka. Má hlava to však zatím není schopná p…
Text 22.03.2018 10:10
Text
Asi jsem to zvoral ... tyhle \x jsou bez hranatých závorek. Takže BEZ hranatých ...
dsa 22.03.2018 13:53
dsa
S regulárními výrazy si netykám. Věnoval jsem ti tedy 3 minuty mého času a udělal na to program.…
Flash_Gordon 22.03.2018 10:30
Flash_Gordon
V PSPadu se to dá, jdi do hledání (ne nahrazení): Hledat: \d{2,2}\.\w\.\d{3,3} [x]Regularní výrazy…
Jan Fiala 22.03.2018 10:43
Jan Fiala
{2,2} znamená počet výskytů. Dá se nahradit za \d\d \d je číslo \w je znak \. je tečka - musí se esc…
Jan Fiala 22.03.2018 10:45
Jan Fiala
spíše ještě takto: ^\d\d\.\D\.\d\d\d$ (přidán začátek a konec řádku. Případné nahrazení "ničím" vy…
touchwood 22.03.2018 10:58
touchwood
Prizivim se. PSPad 5MB log z aplikace, pokud zvolim ctrl+w (zalomit radky) neda se s tim vubec praco…
MaSo 22.03.2018 11:04
MaSo
Jak dlouhé jsou řádky? Pokud hodně dlouhé, tak to PSpad zabije
Jan Fiala 22.03.2018 19:54
Jan Fiala
1000 znaku, nekdy i vice...:-/
MaSo 23.03.2018 08:33
MaSo
To není tak hrozné. Sice je jeden řádek na několik stránek... poslední
Jan Fiala 23.03.2018 11:10
Jan Fiala
uvnitř hranatých závorek se nemohou používat "characters classes" jako \w. Pokud tazatel píše **.*.*…
korin 22.03.2018 12:06
korin

Možná to je trochu kostrbaté řešení, ale jsem přesvědčený, že by fungovalo:
Soubor načíst do Excelu, jako oddělovač zvolit tečku. Potom už jenom pomocí vhodného vzorce/podmínky vyfiltrovat řádky, kde ve sloupci B je prázdná buňka....

má li to desetitisíce řádků, postup přes textový editor prověří rychlost zpracová textu...

pspad asi ne
ale pomocí grep
grep -v '..\..\....' <<<"$inpu"
kde zde mám vstup v proměnné inpu
,v případě souboru
grep -v '..\..\....' in.txt
a pro uložení do souboru místo vypsání na výstup
grep -v '..\..\....' in.txt > o.txt

možná sublime text Ctrl+F vložit pattern / regex ..\..\.... a Search All a stačí stisknout dvakrát tlačítko delete ale opět to možná bude pomalé

prasárna s excelem , tohle je fakt na blití

Potřebuji přepsat regulární výraz pro **.*.*** kdy hvězdička je buď číslice nebo písmeno, viz zadání dotazu. Dále si s tím snad již poradím. Pro mě je to vyšší dívčí. Nasadím buď TextCrawler nebo jiný podobný program. Děkuji všem. :beer:

V odkazu uvedené jsem četl hned včera, jak o tom padla zmínka.
Má hlava to však zatím není schopná pobrat. Tak mě prosím omluvte. Je to pro mě těžký začátek. Vytrvám.

Vyzkoušel jsem regulární výraz [\w\w]\.[\w]\.[\w\w\w] v programu TextCrawler, ale filtruje mi to pouze přes tučně zvýrazněné znaky. Ostatní asi nejsou ve výrazu zahrnuté.
Např.:
01.A.001
20.B.005
28.A.011

Jaký tedy bude správný regulární výraz, aby to skutečně odfiltrovalo kompletně celé délky řetězců?
01.A.001
20.B.005
28.A.011

Chci se to naučit. Díky za pomoc.

S regulárními výrazy si netykám.

Věnoval jsem ti tedy 3 minuty mého času a udělal na to program.


 DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK) // Test result.
            {
                var lines = File.ReadLines(openFileDialog1.FileName);
                foreach (var line in lines)
                {
                    if (line.Length != 8)
                    {
                        using (StreamWriter w = File.AppendText("vysledny_soubor.txt"))
                        {
                            w.WriteLine(line);
                        }
                    }
                }
            }
        }

Program je v příloze tohoto příspěvku.
V programu klikneš na tlačítko, nalistuješ soubor a klikneš Otevřít.
Pak soubor, který chceš bude společně vedle EXE programu pojmenovaný vysledny_soubor.txt

Děláme to ve volném čase, tak by nebylo na škodu podpořit poradnu nebo tak.

uvnitř hranatých závorek se nemohou používat "characters classes" jako \w. Pokud tazatel píše **.*.*** pak je dobré to dodržet a nespekulovat, že ** jsou čísla, , * písmena, *** čísla nevymýšlet \d\d\.\w\.\d{3}

Zpět do poradny Odpovědět na původní otázku Nahoru