Mám problém u 3MB vstupního textu, pouštím na něj grep a vypisuje to na terminálu asi 4-8 výskytů za sekundu -což je tragédie. (armv7l Cortex A53 38 BogoMips) víc jak 30s. asi Jak to urychlit? Vtipný je ,že když místo patternu změním https: za http: tak je to do 5s hotové i když tam ponechám výraz, které je pro https: pomalý[^/]+. , neboli to není triviální https:..............
to nejduležitější: Přepínače jsou -o a -P. Výraz je: "https://\\K[^/]+"
Zkoušel jsem to downgradovat postupně, až jsem došel na na grep -o https:................................. Což je dostatečně rychlé. Stejně rychlé jako -o -E https:.{60}... To by
šlo použít (a následně použít pípu s druhým grepem, což bude mnohem rychlejší na menším množstvím textu), ale
má to jednu nevýhodu, že to vyřadí některé výskyty, kde se vyskytuje nový řádek ,což tedy nechci. A znak CR+LF se javascriptu vyskytuje ,že
Varianty:
odmazat \K
nahradit [^/]+ za .+?/ (funguje jeno s grep -P , zatímcto s grep -E to tiše funguje chybně)
nahradit za ....
curl "https://www.nytimes.com/fides/api/v1/privacy-experience?show_disabled=false®ion=eea&component=overlay&has_notices=true&has_config=true&systems_applicable=true&include_gvl=true&include_meta=true" |grep -Eo ":\"https://.{45}" | grep
# je rychlé ale vyřadí to záznamy kde se vyskytuje newline po 45 znacích
Za další , zkusil jsem magický přepínač grep -z. ale s přepínačem -P je pomalý, -s E rychlý. proč?
https://www.nytimes.com/fides/api/v1/privacy-experience?show_disabled=false®ion=eea&component=overlay&has_notices=true&has_config=true&systems_applicable=true&include_gvl=true&include_meta=trueMimochodem doporučuji to sosnout ,wgetnout grepnout ,sortnout a uniqnout a uvidíte věci . (Je tam pár false positives)