Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - exkalibr

Stran: 1 2 [3] 4 5 ... 25
31
Vývoj / Podmínka while nefunguje dle očekávání
« kdy: 30. 08. 2023, 15:28:59 »
Proč bash skript spuštěný po startu OS z ~/.profile píše:
"System activity is 20.00 below 10.25%. Starting memory monitoring."?

Pokud je system activity 20.00 tak nemá dojít k volání funkce monitor_memory . Má k tomu volání monitor_memory dojít až když je aktivita pod 10.25 ... Kde PŘESNĚ je chyba?
Kód: [Vybrat]
mpstat_activity_float() {
  local idle=$(mpstat | awk 'NF >= 1 {idle += $(NF)} END {print idle}')
  local activity=$((100 - idle))
  # local activity=$(awk -v idle="$idle" 'BEGIN {print 100 - idle}')
  printf "%.2f\n" "$activity"
}

# Funkce na čekání na snížení aktivity pod určitou úroveň
# Spouští monitor_memory &
function waiting_on_system_ready_monitor_memory() {
  local target_activity=10.25
  local current_activity=$(mpstat_activity_float)
 
  while (( $(echo "$current_activity >= $target_activity" | bc -l) )); do
    sleep 120  # Dvouminutové intervaly
    current_activity=$(mpstat_activity_float)
  done

  echo "System activity is $current_activity below $target_activity%. Starting memory monitoring."
  monitor_memory &
}

# Zajistit čekání na připravenost systému
waiting_on_system_ready_monitor_memory &

32
Symfony. Na patlání se vybodni.

No frameworku jsem se chtěl vyhnout protože objektové programování je náročné na paměť a CPU. A nechci se na freehostingu dostat do situace, kdy mi na nějakou dobu zastaví po zbytek dne aplikaci protože jsem vyčerpal nějaký limit. Obecně Objektové programování je náročné. Chápu, že pokud bych to jel na placeném hostingu bez omezení hitů, bylo by to OK. Anebo z jakého důvodu mi doporučujete Symfony, je zaměřen právě na lazy caching?

33
Chtěl bych si po létech splnit svůj sen a napsat php  aplikaci s přihlašováním pro uživatele. V minulosti jsem to už zkoušel a nedopadlo to moc dobře. Buď jsem měl od počátku špatný design, např. jsem měl v paměti moc dlouhé stringy a buffery (náročnost na paměť) nebo to bylo objektově moc zatížené na CPU. Ale já potřebuju napsat aplikaci, která nebude náročná na paměť, CPU, hity a I/O operace. Jen podotýkám že nemám na to školu, jen se po dlouhé době vracím k php. Aplikaci chci udělat co nejjednodušší, takže se vyhnu vzkazníku nebo dlouhým výpisům dat z mysql. Zezačátku mám zájem sbírat od uživatelů data a to bude probíhat v několika úrovních. Teprve až vstupní data zkompletuji a vyhodnotím, zapíšu do hlavní tabulky, chci aby uživatelé měli k dispozici všechny funkce aplikace. Ale zdá se, že bude těžké takovou databázi na freehostingu exportovat a zálohovat, protože ta možnost tam není a export/import je náročný kvůli limitům. Tak si říkám (1. otázka) jak na designovat to mysql. Dát tam třeba 20 tabulek na ty vstupní data, aby to bylo oddělené od tabulky s uživateli a od tabulky se  zkompletovanými daty? To by snížilo množství dat v jednotlivých tabulkách a bylo by pro mě snažší  sledovat co se děje v jednotlivých tabulkách. Oddělil bych jednotlivé fáze vyplňování dat, které budou obsluhovány jinými php skripty. 2. nejspíš bych co se dá nahrál mimo freehostingový server (obrázky, js, css). Slyšel jsem že existují cache. Existují free cache servery a nemyslím proxy, které byste mi mohli doporučit? Pak jsem slyšel že existuje technika lazycache že se má vše nahrát do jednoho souboru. Asi myšleno aby js nebyl roztahaný do více souborů. Což právě v mém případě je tak - každá úroveň vyplňování dat a řekněme že jich bude 20 bude obsahovat 20 js souborů a 20 php skpritů. To asi není ideální, že? Takže všechno sloučit dohromady? Ale jak bych to pak mohl vyvíjet, když bych se v tom nevyznal. Zřejmě na to musí být nějaká aplikace, ve které by se to php, js, css dalo vyvíjet (na linuxu). A nakonec si říkám, že bych nejraději použil nějaký skriptovací jazyk, abych mohl ty php soubory a takový věci jako css a js v jednom souboru vygenerovat, ale netuším jaký skriptovací jazyk se na to hodí. Napadlo mě "pomalé" php, mohl bych jednotlivé data načítat z txt souborů s konfigurací a pak je zkompletovat do .php . Co tím myslím: při vyplňování a odesílání dat se opakují ty samé vzorce na většině stránek. člověk potřebuje znát názvy políček, jak jdou za sebou na formuláři, typ políček, názvy sloupců v mysql pro insert a názvy sloupců pro vyhledávání nebo pro změnu dat... Takže když bych si to uložil jako soubor k načtení a naparsování, tak bych si to snad mohl zjednodušit ale bylo by to zase složité. Celkově se toho děsím protože nevím jaká cesta je správná ale chtěl bych si nějak ušetřit práci.

34
Rozhodně LLM. Výrazu AI bych se vyhnul. Je to zavádějící.

35
Software / Re:Info o obrázku v nomacs, gThumb a Ristretto
« kdy: 09. 08. 2023, 14:44:56 »
Teď mě napadlo, že bych si mohl zkusit napsat vlastní prohlížeč v Lazarusu  :) který by stačilo zavolat asi takto viewer "obr1 obr2 obr3" (v seznamu by byl celý seznam obrázků) a mohl bych si je takto prohlížet ty vybrané soubory přímo z terminálu. U gthumbu a nomacsu a dalších mi to nefunguje.

36
Ještě jeden dotaz na program drawing. Když dám vložit obrázek ze schránky do nového a pak uložit tak se mi uložil prázdný dokument.

37
Software / Info o obrázku v nomacs, gThumb a Ristretto
« kdy: 08. 08. 2023, 16:20:32 »
TZdravím. Než jsem přešel na linux s xFce4 používal jsem kdysi dávno ACDsee 2.4 a později FastStone Viewer k prohlížení obr. na Windows. Důležité pro mě bylo mít seznam a vlevo dole pod stromem byl náhled obrázku. Když jsem chtěl změnit obrázek zmáčkl jsem F2.

gthumb používá F2 ale není vidět původní název obrázku. Takže nevím jak zkopírovat původní jméno obrázku a vložit do pole, abych mohl editovat název.

nomacs - tam zase nemohu přijít na to jak zobrazit informace o souboru kdy byl obrázek vytvořen případně změněn nebo v budoucnu by se mi také mohlo hodit jakou má velikost a rozlišení.

Ristretto jsem ještě moc nepoužíval.

U nomacsu a gthumb mám občas problém že se dostanu do mou prohlížení, kdy to tak trochu vypadá jako prohlížecí pás, ale nevidím klasický seznam souboru ve kterém se dají soubory přejmenovat nebo kontrolovat datum vytvoření případně si to seřadit podle času...

Ještě mám nainstalovaný wionior zatím ani moc nepoužívám.

Můžete mi dát nějaké rady jak toto ovládat?

A potom ještě bych měl dotaz na program Krita, který mi doporučil ChatGPT. Sice jsem chtěl asi něco jiného. Hledal jsem program, kterým bych mohl zaznamenat pohyb a akce stylusem na tabletu když kreslím na canvas na webové stránce. Něco moc efektivního a nenáročného na paměť, protože prohlížeč a webová stránka už mi žere poslední zbytky paměti (ten dnešní JS je neskutečně náročný na paměť pokud to jde tak blokuju 99% serverů co přeposílá .js soubory). Nicméně tedy jsem vyzkoušel tu krétu a připomíná mi to vzhledem a funkemi Photoshop, asi přívětivější na ovládání než Gimp. Kdybyste měl někdo čas vysvětlit k čemu fungují nebo jak se ovládají ty štětce vpravo dole (mám mint 20 takže možná ne zcela aktuální verzi) tak budu rád. Běžně na PS jsem používal zkratku x na přepínání barvy popředí a pozadí a to tam nevidím nevidím tam tato dvě barvy jako v PS. Nebo nechápu kde a jak se používá nástoj stamp - razítko. Z PS znám funkci "s" .. a alt+s na určení zdrojové oblasti odkud se bude kopírovat. Asi teď chápu jen angl. zkratky [ , ] na změnu velikosti kurzoru, ale zatím jsem nenašel nastavení pro štětce. Ale vypadá to zajímavě ten program.

38
Název článku, odkaz a hloubka zanoření v menu.
To je výstup všech položek v menu.
Někdo mi poradil na stackoverflow zdá se že tohle řešení by mělo fungovat:
Kód: [Vybrat]
li_obj = ul_obj[0].xpath('//li[parent::ul[@class="level-2"] and not(parent::ul[@class="level-3"])]/a')
Zítra bych to odladil a uvidím jestli to fakt je ono. Já to budu řešit tak, že číslo levelu si dosadím.

39
Co tedy má být výstupem? Seznam všech listů menu? A jenom jejich názvy/odkazy, nebo i cesta k nim v menu? Pokud vám stačí jenom ty elementy s odkazy, pak to řeší XPath výraz ul//a a nepotřebujete žádnou rekurzivní funkci.

Ukážu vám kousek z kódu jak jsem se to snažil řešit.
Kód: [Vybrat]
def extract_data(parent_depth, section, url_dirname, ul_obj, in_submenu=False):
    submenu_level = 1
    li_obj = []
    if ul_obj:
        # NE VŠECHNY li MAJÍ class !!!
        class_name = ul_obj[0].get("class")
        submenu_level =  int(class_name.split("level-")[1])
        # Create Alias for current article Title
        title = section
        # PROBLEMATICKÝ ŘÁDEK:
        li_obj = ul_obj[0].xpath('.//li[not(.//ul[@class="level-3"]//ancestor::li[@class="wnd-with-submenu"])]//a')
        for li in li_obj:
           ... toto byla jen zahřívačka kde jsem se díval co jsem vlastně obdržel
    if li_obj:
        for li in li_obj:
            has_submenu = "wnd-with-submenu" in li.get("class", "")
            link = li.xpath('.//a[@class="menu-item"]')[0]
            if link is None:
                print(f"li: {etree.tostring(li, pretty_print=True).decode()}")
                print("link error: exit()")
                exit()
            # url a název článku, plus hloubka vnoření, jsou hlavní informace, které potřebuju připravit k zápisu
            url = link.get("href").strip("/")
            title = link.xpath('.//span[@class="menu-item-
            #submenu_ul potřebuju předat do funkce pro rekurzivní volání, na další zpracování. Takže nějak se k němu musím dostat.
            if has_submenu:
                submenu_ul = li.xpath('.//ul[contains(@class, "level-")]')
                if debug_level > 5:
                    print(f"link: {etree.tostring(li, pretty_print=True).decode()}")
            else:
                submenu_ul = []

Pak už jen nějaký chaotický kod s komentářema (je to rozdělané a v této fázi je podstatný ten kod výše...

Kód: [Vybrat]
            in_submenu = len(submenu_ul) > 0
            if in_submenu:
                print("In submenu...")
                if not has_submenu:
                    print("ERR: Weird thing happened")
                    exit()
               # VE SMYČCE SE NEMÁ SUBMENU LEVEL ZJIŠŤOVAT
               # JE UŽ ZJIŠTĚN MIMO SMYČKU!
               # submenu_level = int(submenu_ul[0].get("class").split("level-")[1])
                print(f"\"{title}\", \"{url}\", {submenu_level}")
                if debug_level>2:
                    if has_submenu:
                        print ("DEBUG in_submenu:")
                        extract_data(parent_depth + 1, "IN wnd-with-submenu:"+section, url_dirname, submenu_ul, in_submenu=True)
                    else:
                        print ("(DEBUG in_submenu. None submenu found)")

                # print(f"submenu_ul[0]: {etree.tostring(submenu_ul[0], pretty_print=True).decode()}")
                # print(f"Aktuální submenu_ul[0] třída má level {submenu_level}")
                # if parent_depth != submenu_level:
                #    print(f"Kontrola: Rodičovská parent_depth {parent_depth} se nerovná získané ul submenu_level {submenu_level}.")
                 #   extract_data(submenu_level, section, url_dirname, submenu_ul, in_submenu=True)
            else:
                print(f"\"{title}\", \"{url}\", {submenu_level}")

Celé to spouštím takto:
Načti soubor
Kód: [Vybrat]
with open("temp.html", "r") as f:
    html_content = f.read()

parser = etree.HTMLParser()
tree = etree.fromstring(html_content, parser)

menu_div = tree.xpath('//div[@id="menu-slider"]')[0]
menu_nav = menu_div.xpath('.//nav[@id="menu"]')[0]

# Vyber všechny prvky <li> na první úrovni menu
items = menu_nav.xpath('.//ul[@class="level-1"]//li')

# Vybere všechny prvky <li> na DRUHÉ úrovni menu, protože
# !!! třída wnd- je na druhé úrovni !!!
# items = menu_nav.xpath('.//ul[@class="level-1"]//li[contains(@class, "wnd-")]')

Hlavní smyčka pro načtení první úrovně.
Kód: [Vybrat]
parent_depth = 1
items_count = 0
# Získej adresu na objekt link což ve skutečnosti je list item <li>...</li>
for item in items:
    if item.get("class"):
        in_submenu = "wnd-with-submenu" in item.get("class")
    else:
        in_submenu = False
        if debug_level >= 2:
            print("class not present")

    # Získej první odkaz <a>, kde je atribut href
    tag_a = item.xpath('.//a[contains(@class, "menu-item")]')[0]
    url_dirname = tag_a.get("href").strip("/")
    section = tag_a.xpath('.//span[@class="menu-item-text"]/text()')[0]
   
    # Získej objekt <ul> s třídou začínající na "level-2" (ZDE JE ASI STEJNÝ PROBLÉM JAKO VÝŠE)
    ul_obj = item.xpath('.//ul[contains(@class, "level-2")]')
    if ul_obj:
        extract_data(parent_depth, section, url_dirname, ul_obj,


40
Menu na stránce webnode.cz má několik úrovní ul. Na každé úrovni ul je třída class level-1 až např. level-3. Je tam seznam položek li a ty které obsahují vnořené menu mají navíc třídu wnd-with-submenu. V pythonu mám rekurzivní funkci, která prochází ty menu resp. ul. Přesněji řečeno první úroveň jsem udělal jako hlavní smyčku tj. ne rekurzivně. Tím projdu první úroveň. Když narazím na podmenu spouštím rekurzivní funkci. Nyní zde je problém s tím xpath. Zdá se to být nevyřešitelné.

Celý html kod sem dávat nechci, je to dlouhé a nepřehledné, zkusím objasnit pseudo kodém. Místo tagu a se spany a názvem článku použiju link A, link B, link c atd... A připomínám, že nyní řeším tu 2. úroveň.
Kód: [Vybrat]
ul level 2
li link 2A
/li
li link 2B
/li
li link 2C (obsahuje menu)
   ul level 3
   li link 3A /li
   li link 3B /li
   li link 3C /li
   /ul
/li
/ul level 2

Takže já spouštím tu funkci a vidím obsah toho ul level 2. Začnu procházet ty jednotlivé položky menu li ale rozlišuje se jestli je to li bez třídy nebo to li kromě linku obsahuje taky vnořený seznam. Tento vnořený seznam nesmí být ve výsledku.

Zkoušel jsem několik možností a ani jedna nefungovala správně:

Kód: [Vybrat]
# li_obj = ul_obj[0].xpath('.//li[@class="wnd-with-submenu"]')
Toto vypíše jen články s vnořeným menu.

Kód: [Vybrat]
li_obj = ul_obj[0].xpath('.//li[@class="wnd-with-submenu" or not(@class)]')
Toto myslím vypisuje i ty li které jsou zanořené v tom vnořeném ul. Nefungovalo podle potřeby.

Kód: [Vybrat]
li_obj = ul_obj[0].xpath('.//li[not(.//ul[@class="level-3"]//ancestor::li[@class="wnd-with-submenu"])]//a')
[code]
Toto mělo vypsat všechny li v seznamu ul (2. level), bez toho zanořeného menu. Toto však nefunguje. Místo toho se stane to, že to vypíše články bez vnořeného menu, první vnořený článek nevypíše, a ostatní vnořené články vypíše. To je chyba. [b]Vnořené články se nemají vypisovat vůbec[/b] (na to budu volat funkci).

Domnívám se, že výraz [b]not(.//ul) je interpretován tak, že zcela vyloučí ty položky, který obsahuje li 2 level, místo aby poskytlo pouze ten odkaz z této položky li 2 level[/b].

Zkrácený html kód...

[code]
<li class="wnd-with-submenu">
<a class="menu-item">LINK LEVEL 1</a>
<ul class="level-2">
<li>
<a>link level 2 A</a>
</li>
<li>
<a>link level 2 B</a>
</li>
<li class="wnd-with-submenu">
<a>LEVEL 2 C with SUBMENU</a>
<ul class="level-3">
<li>
<a>link level 3 D DON'T!!</a>
</li>
</ul>
</li>

Pak to pokračuje další položkou level 2 a další submenu ...

Ještě stručněji:
li class="wnd-with-submenu"
   LINK LEVEL 1
   ul class="level-2"
      li
         link level 2 A
      /li
      li
         link level 2 B
      li
      li class="wnd-with-submenu"
         link LEVEL 2 C with SUBMENU
         ul class="level-3"
      li
         link level 3 D NEVYPISOVAT!!
      /li
   /ul
/li

41
Vývoj / Re:Bash script na monitorování aktivity CPU
« kdy: 21. 07. 2023, 22:43:01 »
Nikdo z komunity nepřišel na to co přesně tak dlouho dělá. Paměť je volná a cache jsem vypnul, jede to rychleji bez diskové cache. Pokilloval jsem všechny možné programy a procesy co jsem nepotřeboval. Po té půlhodině to jede docela dobře na 3.5 GB RAM. Mám tu smůlu že jsem zrovna narazil na tento limit. O pár stovek více, bylo by to v pohodě. Takhle zvládám jen YT, FB, ChatGPT, xed a subl. (Volba je mezi FB a YT obě současně spustit nemohu).

co říká systemd-analyze blame ?

jestli to je virtuál, tak co mu dát víc RAM?

je nějaký důvod, aby to bylo jako virtuál na Windows, ještě k tomu na XP?

Víc RAM nejde, tak jak to mám je to optimální.

systemd-analyze
Startup finished in 9.512s (kernel) + 41.629s (userspace) = 51.142s
graphical.target reached after 41.596s in userspace
$ systemd-analyze blame
20.024s udisks2.service                                                      >
18.643s networkd-dispatcher.service                                          >
13.719s fwupd-refresh.service                                                >
12.480s accounts-daemon.service                                              >
11.877s lightdm.service                                                      >
11.700s plymouth-quit-wait.service                                           >
10.794s ModemManager.service                                                 >
10.155s ubuntu-system-adjustments.service                                    >
 9.948s systemd-journal-flush.service                                        >
 9.860s dev-sdb3.device                                                      >
 8.010s avahi-daemon.service                                                 >
 7.955s NetworkManager.service                                               >
 7.857s polkit.service                                                       >
 7.585s systemd-logind.service                                               >
 7.511s wpa_supplicant.service                                               >
 4.197s systemd-udevd.service                                                >
 3.971s gpu-manager.service                                                  >
 3.623s grub-common.service                                                  >
 3.157s networking.service                                                   >
 2.988s ua-timer.service                                                     >
 2.733s apport.service
2.588s rsyslog.service                                                      >
 2.105s ntp.service                                                          >
 2.076s hddtemp.service                                                      >
 2.021s systemd-resolved.service                                             >
 1.843s apparmor.service                                                     >
 1.568s e2scrub_reap.service                                                 >
 1.466s systemd-tmpfiles-clean.service                                       >
 1.381s lm-sensors.service                                                   >
 1.320s systemd-modules-load.service                                         >
 1.210s systemd-tmpfiles-setup-dev.service                                   >
 1.107s alsa-restore.service                                                 >
 1.079s dns-clean.service                                                    >
 1.075s systemd-fsck@dev-disk-by\x2duuid-6c849af9\x2d2ec9\x2d4408\x2da3f7\x2d>
 1.039s user@1000.service                                                    >
 1.029s media-filmy.mount                                                    >
 1.002s keyboard-setup.service                                               >
  992ms systemd-sysctl.service                                               >
  964ms media-install.mount                                                  >
  910ms systemd-tmpfiles-setup.service                                       >
  854ms grub-initrd-fallback.service                                         >
  783ms systemd-journald.service                                             >
  763ms modprobe@efi_pstore.service                                          >
  756ms modprobe@ramoops.service                                             >
  746ms kerneloops.service                                                   >
  703ms systemd-udev-trigger.service                                         >
  670ms systemd-sysusers.service                                             >
  654ms pppd-dns.service                                                     >
  652ms sysstat.service                                                      >
  591ms systemd-random-seed.service                                          >
  553ms open-vm-tools.service                                                >
  515ms lvm2-monitor.service                                                 >
  471ms kmod-static-nodes.service                                            >
  437ms home-user-mnt.mount                                                  >
  407ms upower.service                                                       >
  375ms dev-hugepages.mount                                                  >
  371ms dev-mqueue.mount                                                     >
  367ms sys-kernel-debug.mount                                               >
  363ms sys-kernel-tracing.mount                                             >
  355ms blk-availability.service                                             >
  299ms ifupdown-pre.service                                                 >
  276ms setvtrgb.service                                                     >
  268ms run-vmblock\x2dfuse.mount                                            >
  253ms systemd-remount-fs.service                                           >
  221ms ufw.service                                                          >
  150ms systemd-update-utmp.service                                          >
  112ms systemd-user-sessions.service                                        >
   89ms rtkit-daemon.service                                                 >
   88ms dev-disk-by\x2duuid-8370ec3e\x2d7e00\x2sdasdasd7.>
   86ms console-setup.service                                                >
   64ms plymouth-read-write.service                                          >
   64ms motd-news.service                                                    >
   59ms modprobe@chromeos_pstore.service                                     >
   42ms user-runtime-dir@1000.service                                        >
   42ms openvpn.service                                                      >
   27ms plymouth-start.service                                               >
   25ms systemd-update-utmp-runlevel.service                                 >
   24ms finalrd.service                                                      >
   19ms home.mount                                                           >
   19ms modprobe@pstore_blk.service                                          >
   16ms modprobe@pstore_zone.service                                         >
   12ms sys-fs-fuse-connections.mount                                        >
    9ms sys-kernel-config.mount

42
Vývoj / Re:Bash script na monitorování aktivity CPU
« kdy: 21. 07. 2023, 22:40:24 »
[...] mám linux spuštěný jako VM pod Windowx XP [...]
20.07.2023?? no fakt to neni ozivene vlakno dotazu po 15letech :-D

S Windows XP pracuji přesně 20 let.

43
menu.xml
Kód: [Vybrat]
<div id="menu-slider">
<nav id="menu">Denní menu</nav>
</div>
Kód: [Vybrat]
xmllint --xpath '/div/nav/text()' menu.xml
Output:
Kód: [Vybrat]
Denní menu

Nepřišel jsem na to jak to xmllint nainstalovat na mém mint 20 to není. Na stránce jsem nenašel instalačku.

44
menu.xml
Kód: [Vybrat]
<div id="menu-slider">
<nav id="menu">Denní menu</nav>
</div>
Kód: [Vybrat]
xmllint --xpath '/div/nav/text()' menu.xml
Output:
Kód: [Vybrat]
Denní menu

Díky moc  ;D. Přesně něco takového jsem hledal na začátku, ale chatGPT nic dobrého neporadil.

A když si takový expert, nevíš jestli něco podobného nejde udělat také u textového prohlížeče jako je lynx ale z DOMu? Máš třeba stránku, která se skoro celá načte přes AJAX a zdrojový kód neobsahuje tabulku. K tabulce se člověk dostane jen přes načtený DOM. Takže v Javascriptu takhle můžeme použít Jquery, ale kdybych to chtěl udělat z terminálu přes prohlížeč, který je nízkonárokový podobně jako lynx? Existuje podobná utilita?

45
No toto je ta původní chyba co mi píše když odstraním zpětná lomítka zase u dalšího příkazu awk:
Kód: [Vybrat]
awk: warning: escape sequence `\/' treated as plain `/'

Kód: [Vybrat]
# Získáme hlavní odkazy z menu
main_links=$(echo "$menu" | awk '/<ul class="level-1">.*<\/ul>/ { print }' | awk -F 'href="' '{ for (i=2; i<=NF; i++) { print $i } }' | awk -F '">.*<\/span><\/a>/ { for (i=1; i<=NF; i++) { print $i } }' | sed -E 's/<a class="menu-item" href="([^"]+)"><span class="menu-item-text">([^<]+)<\/span><\/a>/\1/g')

Bot odpověděl:

The error message "awk: warning: escape sequence \/' treated as plain /'" indicates that there is an issue with the use of the escape character '' in the awk command. The backslash '' is being treated as a plain slash '/' instead of an escape character. This might be happening because the command is being executed in a context where the backslash is not being interpreted as an escape character, or there might be some other conflicting syntax.

To fix this issue, you should try using double backslashes '\/' instead of a single backslash in the awk command. Here's the updated command:

bash

Kód: [Vybrat]
main_links=$(echo "$menu" | awk '/<ul class="level-1">.*<\/ul>/ { print }' | awk -F 'href="' '{ for (i=2; i<=NF; i++) { print $i } }' | awk -F '">.*<\/span><\/a>/ { for (i=1; i<=NF; i++) { print $i } }' | sed -E 's/<a class="menu-item" href="([^"]+)"><span class="menu-item-text">([^<]+)<\\/span><\\/a>/\1/g')

By using double backslashes, you escape the backslash character itself, ensuring it is interpreted correctly as an escape character within the awk command. This should resolve the warning message.

Ale on opravuje sed místo awk.

Kód: [Vybrat]
sed -E 's/<a class="menu-item" href="([^"]+)"><span class="menu-item-text">([^<]+)<\\/span><\\/a>

Stran: 1 2 [3] 4 5 ... 25