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í
×
dnes 19:11 | Nová verze

Do aplikace pro instant messaging Telegram (Wikipedie) lze nově nahrát češtinu. Více v příspěvku na blogu Telegramu.

Ladislav Hagara | Komentářů: 1
dnes 10:55 | Nová verze

Jean-Baptiste Kempf, prezident neziskové organizace VideoLAN stojící za svobodným multiplatformním multimediálním přehrávačem a frameworkem VLC, oznámil v příspěvku na svém blogu vydání první oficiální verze 0.1.0 v říjnu představeného dekodéru svobodného videoformátu AV1 (AOMedia Video 1) s názvem dav1d (Dav1d is an AV1 Decoder). Jedná se o alternativu k referenčnímu dekodéru libaom. Kódový název dav1da verze 0.1.0 je Gazelle.

Ladislav Hagara | Komentářů: 0
dnes 10:22 | Nová verze

Po více než dvou letech od vydání verze 11.0 byla vydána nová major verze 12.0 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 4
včera 19:55 | Nová verze

Byla vydána verze 3.11 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Řešena je řada bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
včera 15:22 | Nová verze

Byl vydán Mozilla Firefox 64.0. Přehled novinek v poznámkách k vydání a na stránce věnované vývojářům. Nejnovější verze tohoto webového prohlížeče přináší například ovládání více panelů, nebo správce úloh, který lze otevřít v nabídce Firefoxu > Více > Správce úloh, nebo napsáním about:performance do adresního řádku.

Ladislav Hagara | Komentářů: 6
včera 13:00 | Zajímavý článek Ladislav Hagara | Komentářů: 0
10.12. 22:33 | Nová verze

Po 3 měsících vývoje od vydání verze 14 byla vydána nová stabilní verze 15 open source systému Nextcloud, forku ownCloudu, umožňujícího provoz vlastního cloudového úložiště. Přehled novinek i s náhledy v příspěvku na blogu. Pro vyzkoušení Nextcloudu je k dispozici demo.

Ladislav Hagara | Komentářů: 6
10.12. 18:00 | IT novinky

Počítačová hra Doom slaví 25 let. Společností id Software ji vydala 10. prosince 1993. Zahrát si ji lze například na Internet Archive.

Ladislav Hagara | Komentářů: 17
9.12. 23:55 | Zajímavý článek

Nakladatelství Raspberry Pi vydalo 244 stránkového průvodce pro úplné začátečníky s jednodeskovým počítačem Raspberry Pi The Official Raspberry Pi Beginner’s Guide (pdf). Programování ve visuálním programovacím jazyce Scratch je věnována nová příručka Code Club Book of Scratch Volume 1 (pdf). Vydáno bylo také třetí číslo časopisu věnovaného počítačovým hrám Wireframe (pdf).

Ladislav Hagara | Komentářů: 0
9.12. 23:44 | Nová verze

U příležitosti oslav jednoho roku prací na debianím balíčku, vyšlo GPXSee 7.0. Nová verze přináší zejména podporu vektorových map (Mapbox PBF) pomocí nově vzniklého Qt pluginu.

Martin Tůma | Komentářů: 8
Chystáte se přejít na Wayland na „desktopu“?
 (25%)
 (6%)
 (12%)
 (29%)
 (27%)
Celkem 110 hlasů
 Komentářů: 14, poslední 10.12. 12:19
Rozcestník

Dotaz: sed -- vytvoření mezer v čísle po 3 cifrách

Jan Zahornadsky avatar 15.8.2005 22:09 Jan Zahornadsky | skóre: 22 | blog: hans_blog
sed -- vytvoření mezer v čísle po 3 cifrách
Přečteno: 53×
Ahoj,

jak by se dalo sedem vytvořit například z čísla 1234567890 text 1 234 567 890? Zkoušel jsem to jen primitivním
sed 's/\([0-9][0-9][0-9]\)$/ \1/g'
ale to mi udělá pouze do tisíců.. Nelze nějak nastavit, aby se příkaz (například 's/\([0-9][0-9][0-9] \)$/ \1/g') opakoval, dokud neudělá už žádnou další změnu? Se sedem pracuji asi celé dvě hodiny, takže se moc nevyznám... Za každé nakupnutí moc díky!
Actually, I was half an hour into the pointer scripting documentation when she got dressed and left.

Odpovědi

15.8.2005 22:15 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
echo 1234567890 \
  | rev \
  | sed -re 's/([0-9]{3})/\1 /g' -e 's/ $//' \
  | rev
:-) Ale určitě to jde nějak inteligentněji…
15.8.2005 22:44 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Tak jsem vymyslel ještě šílenější:
  a=1234567890
  while true; do
    b=`echo "$a" | sed -re 's/([0-9])([0-9]{3})\>/\1 \2/'`
    if [ "$b" = "$a" ]; then break; fi
    a="$b"
  done
  echo "$a"
:-)
15.8.2005 23:15 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Což mě inspirovalo k čistě sedovému řešení
sed -re ':1; s/([0-9])([0-9]{3})\>/\1 \2/; t1'
15.8.2005 23:21 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Sakra, takovéhle věci jsem taky kdysi uměl, teď si ani nevzpomenu, že existují… :-(
16.8.2005 10:44 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Moc pěkné a elegantní :-)
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é.
16.8.2005 11:35 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Trochu brutální řešení v perlu jediným, ale poněkud speciálním regexpem, který se na každý řádek aplikuje jen jednou (one)
perl -pe 's/(?<=\d)(?=(\d{3})+\D)/ /g;'
Pro srovnání ekvivalent toho sedového řešení, tedy aplikace regexpu na jedn řádek dokud se něco matchne, ale s využitím look-ahead/behid (many)
perl -pe 'while(s/(?<=\d)(?=\d{3}\D)/ /){}'
a nakonec úplný ekvivalent toho sedu (normal)
perl -pe 'while(s/(\d)(\d{3}\D)/$1 $2/){}'
A srovnání rychlosti
           Rate    one   many normal
one     69367/s     --   -10%   -47%
many    77244/s    11%     --   -40%
normal 129705/s    87%    68%     --
Což mě teda přinejmenším hodně překvapilo, že to úplně obyčejné řešení je zároveň nejrychlejší.
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é.
16.8.2005 13:16 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Bylo by možné (na stejném systému) změřit ještě ta dvě sedová řešení (sed+rev a sed s cyklem)?
16.8.2005 17:01 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Bohužel. Příslušná měření jsem dělal přes Benchmark modul v perlu nad třemi řetězci načtenými z DATA. Musel bych nějak vymyslet jak omezit vliv natahování sed a rev do paměti a nad tím se mi teď nechce přemýšlet. Jinak zdroják testu:
#!/usr/bin/env perl

use strict;
use warnings;
use Benchmark qw(cmpthese);

my @strs = <DATA>;

cmpthese(-2, {
		one => sub {
			foreach (@strs) {
				s/(?<=\d)(?=(\d{3})+\D)/ /go;
			}
		},
		many => sub {
			foreach (@strs) {
				while (s/(?<=\d)(?=\d{3}\D)/ /o){}
			}
		},
		normal => sub {
			foreach (@strs) {
				while (s/(\d)(\d{3}\D)/$1 $2/o){}
			}
		}
	});

__DATA__
1234567890
hwiehwfuih
1246537245735
__END__
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é.
16.8.2005 17:56 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Aha, mne by právě spíš zajímalo porovnání toho, když to v shellovém skriptu budu provádět jednotlivými způsoby (perl1-3, sed s cyklem, sed+rev). Ale to si koneckonců zvládnu změřit sám.
17.8.2005 09:26 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Tak ve scriptu bych si typnul, že vě většině zátěží by asi měl vyhrát ten sed s cyklem. Má pro to všechny předpoklady.
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é.
15.8.2005 23:15 petr_p
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Ne, inteligentneji to nelze. Tedy pokud vas konecny automat nepodporuje right2left text (tj. RE aplikuje od konce textu).
15.8.2005 23:24 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: sed -- vytvoření mezer v čísle po 3 cifrách
Abych pravdu řekl, za inteligentnější (a hlavně čistší) řešení bych považoval napsat si nadstavbu nad strfmon(), něco jako je printf(1) vůči printf(3).

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.