Open source reimplementace počítačových her Tomb Raider I a Tomb Raider II spolu s dalšími vylepšeními a opravami chyb TRX byla vydána ve verzi 1.0. Jedná se o sloučení projektů / enginů TR1X a TR2X do jednoho TRX. Videoukázka na YouTube.
Společnost Seznam.cz spouští konverzační nástroj založený na umělé inteligenci Seznam Asistent. Asistent využívá vlastní jazykový model SeLLMa a dočasně i komerční modely od OpenAI provozované v evropských datacentrech prostřednictvím Microsoft Azure. Dlouhodobým cílem Seznamu je provozovat Asistenta výhradně na interních jazykových modelech a ve vlastních datových centrech.
Software LibrePods osvobozuje bezdrátová sluchátka AirPods z ekosystému Applu. Exkluzivní funkce AirPods umožňuje využívat na Androidu a Linuxu. Díky zdokumentování proprietárního protokolu AAP (Apple Accessory Protocol).
Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.
Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.
Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.
Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.
Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.
Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).
Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.
Mám plain text:
[Date.UTC(2014, 11, 23, 5, 12, 0, 0), 3],
[Date.UTC(2014, 11, 23, 5, 14, 0, 0), 3],
[Date.UTC(2014, 11, 23, 5, 16, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 18, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 20, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 22, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 24, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 26, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 28, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 30, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 32, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 34, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 36, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 38, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 40, 0, 0), 0],
A potřeboval bych odstranit řádky výše zvýrazněné kurzívou, aby to vypadalo takto:
[Date.UTC(2014, 11, 23, 5, 12, 0, 0), 3],
[Date.UTC(2014, 11, 23, 5, 14, 0, 0), 3],
[Date.UTC(2014, 11, 23, 5, 16, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 26, 0, 0), 2],
[Date.UTC(2014, 11, 23, 5, 28, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 38, 0, 0), 1],
[Date.UTC(2014, 11, 23, 5, 40, 0, 0), 0],
Konkrétně potřebuji porovnávat poslední číselný údaj a v případě souvislého opakování ponechat pouze první a poslední záznam.
Dá se to relativně jednoduše zvládnout pomocí sed či awk? Pokud ne, asi bych to řešil mechanicky v bashi (načítání řádků, porovnávání hodnoty, vymazání nadbytečného řádku a pořád dokola, dokud bude co mazat).
Řešení dotazu:
cat soubor | sort -k8 -u -r >soubor1 tac soubor | sort -k8 -u -r >soubor2 #paste -d '\n' soubor1 soubor2 >vysledek paste -d '\n' soubor1 soubor2 | uniq >vysledek
On ten plain text má stovky kB a číselný údaj v posl. sloupci se pohybuje mezi 0 - 5, střídavě nahoru a dolu. "unique" to pročistí tak důkladně, že z těch stovek kB zbude pár řádků.
perl -00 -pe 's/(\N* (\d+)\],\n).*\n(\N* \2\],\n)/$1$3/msg'
perl -ne ' /(\d+)\],/; print $pred_radek if $1!=$pred or $pred2!=$pred; $pred2=$pred; $pred=$1; $pred_radek=$_'vytiskni řádek jestli se předešlý nebo následující řádek liší v čísle před
],
Ps. samozřejmě by bylo přehlednější napsat Perl script než tento "one-liner"
perl -ne ' /(\d+)\],/; print if 1..1; print $pred_radek if $1!=$pred or $pred2!=$pred; $pred2=$pred; $pred=$1; $pred_radek=$_'
0], jinak ho to tiskne, tak bych spíš doporučoval něco jako:
perl -ne 'BEGIN{$pred=-1}; /(\d+)\],/; print $pred_radek if $1!=$pred or $pred2!=$pred; $pred2=$pred; $pred=$1;$pred_radek=$_'
#
problém by ještě nastal kdyby "poslední" řádek nekončil \n, pak by se nevytiskl
sed -re 'H;x;/([0-9]+)\].*\1\]/d'
[Date.UTC(2014, 11, 25, 10, 36, 36, 0), 1],
[Date.UTC(2014, 11, 25, 10, 38, 38, 0), 1],
[Date.UTC(2014, 11, 25, 10, 40, 40, 0), 1],
[Date.UTC(2014, 11, 25, 10, 42, 42, 0), 1],
[Date.UTC(2014, 11, 25, 10, 44, 44, 0), 0],
[Date.UTC(2014, 11, 25, 10, 50, 50, 0), 0],
[Date.UTC(2014, 11, 25, 10, 52, 52, 0), 1],
[Date.UTC(2014, 11, 25, 10, 54, 54, 0), 0],
[Date.UTC(2014, 11, 25, 15, 42, 42, 0), 0],
[Date.UTC(2014, 11, 25, 15, 44, 44, 0), 1],
[Date.UTC(2014, 11, 25, 15, 46, 46, 0), 3],
[Date.UTC(2014, 11, 25, 10, 36, 36, 0), 1],
[Date.UTC(2014, 11, 25, 10, 42, 42, 0), 1],
[Date.UTC(2014, 11, 25, 10, 44, 44, 0), 0],
[Date.UTC(2014, 11, 25, 10, 50, 50, 0), 0],
[Date.UTC(2014, 11, 25, 10, 52, 52, 0), 1],
[Date.UTC(2014, 11, 25, 10, 52, 52, 0), 1],
[Date.UTC(2014, 11, 25, 10, 54, 54, 0), 0],
[Date.UTC(2014, 11, 25, 15, 42, 42, 0), 0],
[Date.UTC(2014, 11, 25, 15, 44, 44, 0), 1],
[Date.UTC(2014, 11, 25, 15, 44, 44, 0), 1],
[Date.UTC(2014, 11, 25, 15, 46, 46, 0), 3],
Tiskni
Sdílej: