AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.
Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).
Bylo vydáno do češtiny přeložené číslo 717 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.
Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.10.38 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Google zveřejnil seznam 1220 projektů od 195 organizací (Debian, GNU, openSUSE, Linux Foundation, Haiku, Python, …) přijatých do letošního, již dvacátého, Google Summer of Code.
Na základě DMCA požadavku bylo na konci dubna z GitHubu odstraněno 8535 repozitářů se zdrojovými kódy open source emulátoru přenosné herní konzole Nintendo Switch yuzu.
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.1.0. Po devíti letech od vydání předchozí verze 3.0.5. Doména dillo.org již nepatří vývojářům Dilla.
O víkendu probíhá v Bostonu, a také virtuálně, konference LibrePlanet 2024 organizovaná nadací Free Software Foundation (FSF).
Nová vývojová verze Wine 9.8 řeší mimo jiné chybu #3689 při instalaci Microsoft Office 97 nahlášenou v roce 2005.
Coppwr, tj. GUI nástroj pro nízkoúrovňové ovládání PipeWire, byl vydán v nové verzi 1.6.0. Zdrojové kódy jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.
! flora jetel len ! fauna jelen lev ! nebe letadlo jelen tupolev ! dalsi lentilka jelenice jitrnice jetel lev
Řešení dotazu:
uniq seznam.txt
uniq seznam.txt
dá úplně stejný výsledek jako cat seznam.txt
.
$ cat duplitest.txt ! flora jetel len ! fauna jelen lev ! nebe letadlo jelen tupolev ! dalsi lentilka jelenice jitrnice jetel levmi vypíše po
$ uniq -c -w 3 duplitest.txt 1 ! flora 1 jetel 1 len 1 ! fauna 1 jelen 1 lev 1 ! nebe 1 letadlo jelen 1 tupolev 1 ! dalsi 1 lentilka 1 jelenice 1 jitrnice 1 jetel 1 levpřitom by měl vypsat
$ uniq -c -w 3 duplitest.txt 2 jet 2 len 2 jel 2 levalespoň to tak chápu z toho externího příkladu.
Vzhledem k tomu, že to chceš dělat interaktivně, tak to lze udělat např. následovně. Uložíš si všechny duplicitní řádky do souboru duplicate.lines:
$ sort input.txt |uniq -d >duplicate.lines
V oblíbeném textovém editoru smažeš ze souboru duplicate.lines řádky, které nechceš odstranit:
$ vim duplicate.lines
Z původního vstupního souboru odfiltruješ všechny řádky, které jsou v souboru duplicate.lines a výstup uložíš do nového souboru new_input.txt:
$ fgrep -vxf duplicate.lines input.txt >new_input.txt
Našlo mi to řádky
jetel lev
ty jsem odstranil, protože jsem je nechtěl smazat dokud mi nedá výběr který duplikátní řádek se mi smaže, nechci smazat vždy jen první nebo vždy jen druhý, chci vědět který se smaže.
Poslední krok mi vrátil původní soubor.
cut -d " " -f 2-
).
Nu dobrá, tak využij získaný soubor duplicate.lines a ulož si do souboru remove.lines všechny řádky s duplicitami a prefixem, který charakteruzuje číslo řádku ve vstupním souboru.Co když budu mít soubor s tisíci řádky a navíc já se ty duplicity snažím mezi těmi tisíci najít, kdybch věděl které to jsou nepokládal bych zde dotaz. Vážím si ale tvé snahy, jen chybí uvažování jak moc to bude efektivní v souboru s těmi tisíci položkami. Chci říct, že na takový malý soubor je až příliš mnoho interakce
Nu dobrá, tak využij získaný soubor duplicate.lines a ulož si do souboru remove.lines všechny řádky s duplicitami a prefixem, který charakteruzuje číslo řádku ve vstupním souboru.
$ fgrep -nxf duplicate.lines input.txt >remove.lines
Pak si opět v oblíbeném textovém editoru smaž ze souboru remove.lines řádky, které nechceš odstranit a následně využij tento soubor pro smazání konkrétních řádků ze vstupního souboru:
$ sed -e $(cut -f 1 -d ":" remove.list |sed -e 's/$/d;/' |tr -d "\n") input.txt >new_input.txt
Soubor new_input.txt bude obsahovat výsledek.
nahrej to do SQL databáze
S datábazemi nemám zkušenosti, ale předpokládám, že mám k tomu použít LibreOffice Base a pak ale nevím co dál. Co bych měl hledat v nápovědě abych dosáhl toho co mi radíš.
přidej sloupec, který bude značit duplicityDobře nějak vytvořím sloupec ale jak porozumět, že má značit duplicity?
Pokud chceš zachovat pořadí řádků, nahrej to do SQL databázePobavilo.
perl6 -e 'my %rows .= push: lines.pairs.invert; %rows.grep( *.value.elems > 1 )>>.say':)
awk '{print a[$0]++":"$0}' file.txt | tac | awk -v FS=':' '{b[$2]=$1} a[$2]++{b[$2]++} b[$2]==0{b[$2]=""} b[$2]{b[$2]=">:"} {print b[$2]$2}' | tac | awk -v FS=':' '$1==">" && !a[$2]{a[$2]=">"++i">>"} {print $1a[$2]$2}'
| sed 's#>>\([0-9]\)>>\(.*\)#"\\033[1m\\033[4\1m\2\\033[0m"#' | xargs -I {} printf "{}\\n
"
| sed '/^>>[0-9]>>/{ s#>>#\\033[1m\\033[4# ; s#>>#m# ; s#$#\\033[0m#} ' | xargs -0 -I {} printf '%b' "{}"
| xargs -d '\n' -I {} printf '%b' "{}\\n"
(jen prvních 9)Pokud těch prvních devět už nebude mít svůj duplikát, bude obarveno zase dalších devět, je to tak, zkrátka dokud nesmažu alespoň jeden duplikát?
rakudo
. Použil jsem ho jen proto, že v něm experimentuji a napadlo hezké řešení. Napsat to jde v spoustě věcí v Perlu např.
perl -nE 'BEGIN{ my %line; }; chomp; push @{$line{$_}}, $.; END{ for (keys %line) { say $_ . q{: } . join q{, }, @{$line{$_}} if @{$line{$_}} > 1;}; };'ale nevypadá to, tak elegantně jak v Perlu 6 :)
perl6 -e 'my %rows .= push: lines.pairs.invert; %rows.grep( *.value.elems > 1 )>>.say' <<EOF ! flora jetel len ! fauna jelen lev ! nebe letadlo jelen tupolev ! dalsi lentilka jelenice jitrnice jetel lev EOFOutput:
jetel => [1 13] lev => [5 14]Převádí se to do pole tak jsou řádky číslovány od 0. U Perlu 6 zatím drhne rychlost, ale tisíce by ještě měli být v pohodě.
Jakto že to označuje pokaždé něco jiného ?To je nějaké divné ...
pepe@PC-PEPE-LINUX:~$ perl -nE 'BEGIN{ my %line; }; chomp; push @{$line{$_}}, $.; END{ for (keys %line) { say $_ . q{: } . join q{, }, @{$line{$_}} if @{$line{$_}} > 1;}; };' < file.txt lev: 6, 15 jetel: 2, 14 pepe@PC-PEPE-LINUX:~$ perl6 -e 'my %rows .= push: lines.pairs.invert; %rows.grep( *.value.elems > 1 )>>.say' < file.txt jetel => [1 13] lev => [5 14] pepe@PC-PEPE-LINUX:~$ cat file.txt ! flora jetel len ! fauna jelen lev ! nebe letadlo jelen tupolev ! dalsi lentilka jelenice jitrnice jetel lev
2, 14
a podruhé 1, 13
?
To protože jednou to čísluje řádky od 1
a podruhé od 0
. Jak už jsem psal, ten příklad v Perlu 6 přistupuje k tomu souboru jako k seznamu řádků a první index v seznamu je 0
.
Tiskni Sdílej: