abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 22:55 | Zajímavý článek

V bitmapových obrázcích bývají často ukrytá užitečná data, která jsou ovšem běžně nepřístupná. V článku Full-textové prohledávání komiksů a jiných obrázků (dostupné přes Tor) autor prakticky ukazuje, jak si postahovat komiksy a rozpoznat v nich text pomocí OCR nástroje Tesseract. Následně Ghostscriptem vkládá všechny komiksy do jednoho velkého PDF, ve kterém jde vyhledávat text (který byl původně jen shlukem grafických bodů v bitmapách). Uvedený postup lze použít i k užitečnějším věcem, jako např. indexování nestrukturovaných dat na disku.

Monika Kokešová | Komentářů: 5
včera 22:44 | Pozvánky

17. až 19. května se uskuteční další ročník putovní konference české a slovenské Drupal komunity - tentokrát v Hustopečích na Moravě. Bude se věnovat nejnovějším trendům v Drupalu, ale i v postupech a nástrojích pro vývoj a správu webových aplikací. Můžete se těšit na odborné přednášky, workshopy, neformální debaty i přehlídku nejzajímavějších projektů. Podrobnosti a vstupenky najdete na drupalcs.camp.

Eva Rázgová | Komentářů: 0
včera 22:22 | Nová verze

Byla vydána verze 4.0 textového editoru GNU nano (Wikipedie). Podrobný přehled novinek a oprav v oznámení v diskusním listu info-nano nebo v souboru ChangeLog na Savannah.

Ladislav Hagara | Komentářů: 0
23.3. 17:11 | Komunita

Na konferenci herních vývojářů GDC 2019 (Game Developers Conference) měla svůj stánek i společnost Red Hat. Návštěvníci si mohli zahrát počítačové hry na Fedoře 29 s Cinnamonem a Lutrisem.

Ladislav Hagara | Komentářů: 0
23.3. 15:33 | Komunita

O víkendu probíhá v Cambridgi (MA) konference LibrePlanet 2019 organizovaná Nadací pro svobodný software (FSF). Na programu je řada zajímavých přednášek. Sledovat je lze také online.

Ladislav Hagara | Komentářů: 2
22.3. 21:33 | Humor

Richard M. Stallman v článku Install Fests: What to Do about the Deal with the Devil navrhuje, jak se vypořádat s morálním dilematem, zda na „installfestech“ (akcích, kde zkušení uživatelé pomáhají nováčkům nainstalovat GNU/Linux na přinesený hardware) instalovat také nesvobodný software, typicky ovladače. Vzdělávací přístup je „škola hrou“, kdy instalace právě nesvobodného softwaru provádí postava „Ďábla“.

Fluttershy, yay! | Komentářů: 11
22.3. 14:44 | Komunita

Dalších sedm produktů od společnosti ThinkPenguin získalo certifikaci RYF (Respects Your Freedom, Respektuje vaši svobodu) udělovanou Nadací pro svobodný software (FSF). Poprvé získal certifikaci USB mikrofon, konkrétně TPE-USBMIC. Certifikace RYF byla představena v říjnu 2012.

Ladislav Hagara | Komentářů: 0
22.3. 13:33 | Komunita

Na Humble Bundle lze získat počítačovou hru Tacoma (YouTube, Wikipedie) běžící také v Linuxu zdarma. Speciální akce končí v neděli v 18:00.

Ladislav Hagara | Komentářů: 0
22.3. 11:11 | Zajímavý projekt

Na Kickstarteru byla spuštěna kampaň na podporu zařízení NexDock 2. Jedná se o přenosnou dokovací stanici aneb notebook bez procesoru a paměti. Stačí připojit podporovaný telefon s Androidem nebo Raspberry Pi.

Ladislav Hagara | Komentářů: 0
22.3. 09:55 | Zajímavý článek

Před týdnem byly vydány nové verze 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1 a 6.0.0.beta3 frameworku pro vývoj webových aplikací Ruby on Rails (Wikipedie). Opraveny byly 3 bezpečnostní chyby: CVE-2019-5418, CVE-2019-5419 a CVE-2019-5420. Analýza CVE-2019-5418 (zobrazit si lze libovolný soubor na serveru, například /etc/passwd) na blogu Chybeta.

Ladislav Hagara | Komentářů: 1
Kolik balíčků (v tisících) máte nainstalovaných na svém systému?
 (4%)
 (14%)
 (33%)
 (30%)
 (19%)
 (3%)
 (2%)
 (1%)
 (3%)
Celkem 234 hlasů
 Komentářů: 23, poslední včera 17:36
Rozcestník

Dotaz: porovnání 2 souborů

5.1.2006 13:28 Karel Borkovec | skóre: 28 | blog: HP_NX9010 | Tábor
porovnání 2 souborů
Přečteno: 383×
Dobrý den. Mám 2 soubory:
aaa;200
bbbb;350
cc;467
a druhý:
aaa;1
bbbb;2
cc;3
Potřeboval bych je porovnat a vytvořit třetí soubor který bude vypadat takto:
1;aaa;200
2;bbbb;350
3;cc;467
Půjde to nějak jednoduše v bashi nebo awkem?

Odpovědi

5.1.2006 14:08 slano | skóre: 5
Rozbalit Rozbalit vše Re: porovnání 2 souborů
toto by mohlo nakopnut:
#!/bin/sh

cat $1 |while read line1
do
  pattern=`echo $line1 | cut -f 1 -d ";"`
  line2=`grep $pattern $2`
  echo `echo $line2 | cut -f 2 -d ";"`";$line1"
done
ako parameter tomu daj prvy a druhy subor, este je potrebne osetrovat return code grepu (ak by nahodou nenaslo hladany vzor v druhom subore, neviem ako to chces)
5.1.2006 14:20 Karel Borkovec | skóre: 28 | blog: HP_NX9010 | Tábor
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Sorry uvedl sem špatný příklad, toto by fungovalo dobře, kdyby vždy souvisel první řádek v prvním souboru s prvním řádkem v druhém souboru... ale když to bude takto:
aaa;200
bbbb;350
cc;467
a druhý:
cc;1
aaa;2
bbbb;3
Tzn. když to bude různě proházené, tak ten skriptík nedube fungovat, proto sem psal v nadpisu "porovnání" souborů... Doufám, že jsem to napsal srozumitelně...
5.1.2006 14:55 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Hmm, tak to jsi měl říct hned :-)
join -t ';' -o '2.2 1.1 1.2' <(sort file1) <(sort file2)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 15:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Pokud nemáš bash, ale pouze sh, tak ekvivalentní je
mkfifo fifo1 fifo2
sort <file1 >fifo1 &
sort <file2 >fifo2 &
join -t ';' -o '2.2 1.1 1.2' fifo1 fifo2
rm fifo1 fifo2
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 15:22 Karel Borkovec | skóre: 28 | blog: HP_NX9010 | Tábor
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Mám bash i sh, díky moc! Funguje to dobře!
5.1.2006 16:25 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Teda nevím jako moc velké jsou ty soubory, ale pro hodně velké soubory by byl rychlejší perl. Třeba trošku brutal oneliner
 perl -e 'sub p(){chomp;split /;/, $_, 2} open F, "<$ARGV[0]"; while(<F>){($k,$v) = p; $t{$k}=$v} close F; open F, "<$ARGV[1]"; while(<F>){($k,$v) = p;  print "$v;$k;$t{$k}$/"} close F' file1 file2
případně jako script
#!/usr/bin/env perl
@ARGV >= 2 or die 'Not enough paramters';
sub p () {
  chomp;
  split /;/, $_, 2
}
open F, "<$ARGV[0]" or die "Can't open $ARGV[0] for readin";
while(<F>){
  ($k,$v) = p;
  $t{$k}=$v
}
close F;
open F, "<$ARGV[1]" or die "Can't open $ARGV[1] for readin";
while(<F>){
  ($k,$v) = p;
  print "$v;$k;$t{$k}$/"
} close F
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 21:33 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Ještě kratší perl oneliner, aneb vychutnejte sílu perlu
perl -e 'sub p(&$){open F, shift @ARGV;while(<F>){chomp;($k,$v)=split /;/,$_,2;&{$_[0]}}close F}p{$t{$k}=$v};p{print "$v;$k;$t{$k}$/"}' file1 file2
Je fakt, že to jde určitě napsat ještě méně čitelně, ale na mistry oboru ještě dlouho mít nebudu.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 21:39 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Oh, chybička se vloudila
perl -e 'sub p(&){open F,shift @ARGV;while(<F>){chomp;($k,$v)=split /;/,$_,2;&{$_[0]}}close F}p{$t{$k}=$v};p{print "$v;$k;$t{$k}$/"}' file1 file2
Kdo chce ušetřit ještě pár znaků, může vynechat close F :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
David Watzke avatar 5.1.2006 22:11 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Wow a tohle dáváš opravdu jen tak z hlavy? Ani to nemusíš zkoušet?
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
5.1.2006 22:20 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
No jasně, při troše praxe to jde samo :-)
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 15:06 slano | skóre: 5
Rozbalit Rozbalit vše Re: porovnání 2 souborů
no, dovolim si tvrdit ze fungovat bude ;) kazdopadne join je elegantnejsie riesenie
5.1.2006 15:08 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Kromě toho, že tahle implementace je silně suboptimální, protože se ten druhý soubor čte tolikrát, kolik je počet řádků prvního souboru je ten shell pěkně nevyužitej.
IFS=';'
while read key rest
do
  echo "$rest;$(grep "^$key;" "$1")"
done <"$2"
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.1.2006 16:21 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Tak jde to implementovat i bashi stejně jednoprůchodově.
uniqprefix=yuwg
IFS=';'
while read key rest
do
  eval "$uniqprefix$key=$rest"
done <"$1"
while read key rest
do
  var="$uniqprefix$key"
  [ -n "${!var}" ] && echo "$rest;$key;${!var}"
done <"$2"
Dvě drobné záludnosti, je nutnost definovat jednoznačný prefix a první cyklus se nesmí spustit jako subproces. Takže ani žádné roury. Jde to samozřejmě vyřešit pro bash (... done < <(filter "$1")) i pro sh (teda pokud to celé vůbec v sh funguje).
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 14:32 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: porovnání 2 souborů
5.1.2006 14:47 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
join -t ';' -o '2.2 1.1 1.2' file1 file2
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 14:51 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Oneliner demonstration (only for bash):
join -t ';' -o '2.2 1.1 1.2' <(echo -e 'aaa;200\nbbbb;350\ncc;467') <(echo -e 'aaa;1\nbbbb;2\ncc;3')
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
5.1.2006 20:47 Andrej | skóre: 46 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: porovnání 2 souborů

To je zajímavé, kolik je na jeden problém řešení. Ještě tu nebyl awk, zde tedy je:

cat vstup1.txt vstup2.txt | awk '
BEGIN { FS = ";" }
/^$/ { druhySoubor = 1; }
/.+/ { if ( druhySoubor ) { pole[ $1 ] = $2 ";" pole[ $1 ]; } else { pole[ $1 ] = $0; } }
END  { for ( i in pole ) { print pole[ i ]; } } ' | \
sort -n -t";" -k1

  • Vstupní soubory jsou ve stejném pořadí jako v zadání.
  • První soubor musí končit prázdnou řádkou.
  • Je to dost ošklivý kus kódu ve srovnání s jinými návrhy.
ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
5.1.2006 21:18 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Tak ten problém s přidáním prázdného řádku i s vyloučením prázdných řádků ve vstupních souborech jde taky udělat takto
(egrep -v '^$' file1; echo; egrep -v '^$' file2) |
awk ...
Ale musím uznat, že to už je fakt maso :-) Nadruhou stranu by to mělo být srovnatelné s tím řešením v perlu.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.1.2006 17:39 Andrej | skóre: 46 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Tak to je ovšem pěkně hustý! To mě nenapadlo. Ale kratší než join to už stejně nevymyslíme...
ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
5.1.2006 22:07 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: porovnání 2 souborů
Tenhle algoritmus jde udělat i v perlu a je to dokonce kratší než perlish řešení
perl -ne 'chomp;m/^$/&&++$d&&next;($k,$v)=split /;/,$_,2;$d?print "$v;$k;$t{$k}$/":($t{$k}=$v)'
Osobně se mi to ale moc nelíbí.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.