
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
Zalezi ti na poradi? protoze pokud ne muzes je seradit podle delky a pak smaza rozmezi ktere te zajima. viz: http://forum.pspad.com/read.php?2,67946
Pořadí řádků je nutné zachovat. Nesmí dojít k jejich pomíchání.
Přečti si něco o regulárních výrazech.
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í
Tak se klidně vyblij. Ne každý ovládá regulární výrazy nebo příkazový řádek, tak jsem jen nastínil jedno z možných řešení.
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.
[\w\w]\.[\w]\.[\w\w\w]
To je problém to najít?
https://www.regularnivyrazy.info/regularni-vyrazy-zaklady.html
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.
Asi jsem to zvoral ... tyhle \x jsou bez hranatých závorek. Takže BEZ hranatých ...
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.
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.
V PSPadu se to dá, jdi do hledání (ne nahrazení):
Hledat: \d{2,2}\.\w\.\d{3,3}
[x]Regularní výrazy
[x]Kopírovat nenalezené
Použij tlačítko Kopírovat
Do nového dokumentu se ti zkopíruje vše, co nevyhovuje regulárnímu výrazu
{2,2} znamená počet výskytů. Dá se nahradit za \d\d
\d je číslo
\w je znak
\. je tečka - musí se escapovat lomítkem, protože je to pro regulární výrazy řídící znak
Takže bys to mohl přepsat i za:
\d\d\.\w\.\d\d\d
spíše ještě takto:
(přidán začátek a konec řádku. Případné nahrazení "ničím" vygeneruje požadovaný výsledek)
edit: nějak mi nefungoval \n, proto tam zůstal prázdný řádek
Prizivim se. PSPad 5MB log z aplikace, pokud zvolim ctrl+w (zalomit radky) neda se s tim vubec pracovat (scrollovani ma tak 3fps - strasna slideshow), bez zalomeni je to ok. Cim to?
Jak dlouhé jsou řádky? Pokud hodně dlouhé, tak to PSpad zabije
1000 znaku, nekdy i vice...
To není tak hrozné. Sice je jeden řádek na několik stránek...
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}