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 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 1
včera 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
včera 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 10
včera 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 6
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 31
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 3
17.2. 09:00 | Nová verze

Bylo vydáno Ubuntu 16.04.2 LTS, tj. druhé opravné vydání Ubuntu 16.04 LTS s kódovým názvem Xenial Xerus. Přehled novinek v poznámkách k vydání a v přehledu změn.

Ladislav Hagara | Komentářů: 57
17.2. 06:00 | Zajímavý článek

Pavel Tišnovský se v dvoudílném článku na MojeFedora.cz věnuje tvorbě pluginů (modulů) pro bitmapový grafický editor GIMP. Pomocí pluginů lze GIMP rozšiřovat o další funkce. Implementovat lze například nové filtry nebo pomocné utility pro tvorbu animací či poloautomatickou retuš snímků.

Ladislav Hagara | Komentářů: 6
16.2. 23:32 | Komunita

Do 30. března se lze přihlásit do dalšího kola programu Outreachy, jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 30. května do 30. srpna 2017, v participujících organizacích lze vydělat 5 500 USD. Jedná se již o 14. kolo tohoto programu.

Ladislav Hagara | Komentářů: 11
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 670 hlasů
 Komentářů: 54, poslední dnes 07:38
Rozcestník
Reklama

Dotaz: Rozddělit soubor pomocí sed/awk/grep

17.1.2011 20:50 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozddělit soubor pomocí sed/awk/grep
Přečteno: 389×
Je to asi snadná věc, měl bych bejt schopnej to vylaborovat sám. Ale ani s awkem, ani se sedem sem za tim nedělal, no, za optání nic nedám.
M8m soubor (kterej reprezentuje obsah databáze, jsou to vypsaný řádky tabulek). Formát je následující:
&nazev_tabulky;prvni_polozka;druha_polozka;..;.....;.......;nta_plozka
pricemz textovy polozky muzou obsahovat konec radky, pak ale nasledujici radek nezacina ampresandem a ten radek predtim konci paznakem "¤". No a ja potrebuju vytahat radky, ktery patreji k jedne tabulce. Delal sem to pomoc grep ^\&tbl; ale to prave zahodilo pokracovani zaznamu po \n. No vim, ye to je trivka, ale neumim ten sed temer pouzivat, awk vubec. Byl bych vdecnej za nejaky nakopnuti do zacatku (myslim to obrazne).
No, byl bysem schopnej na to napsat jednoduchej mlejnek v pajtnu, ale rad bych to udelal tim sedem/awkem, ktery sou na tohle asi mysleny.
Dikec Je.
Nejsem blbý, jen se hloupě ptám

Řešení dotazu:


Odpovědi

17.1.2011 21:32 Ondřej Kopka | skóre: 20 | blog: ondrejk
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Na tohle bude asi nejlepší awk, hledej v manuálu FS a RS.
17.1.2011 21:41 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Doufám, že to není domácí úkol. Pokud ano, tak nečtěte dále. ;)

Jinak stručně awk, bez kontroly čekohokoliv (mimochodem třeba výskytu ampersantu na začátku řádku, i když se nejedná o pokračování předchozího záznamu... což samozřejmě také lze ;), taky to neřeší předchozí existenci souborů a já nevím co, prostě jenom kousek v awk, co to rozseká), pokud správně chápu Váš vstup a to, co chcete, aby z toho vypadlo, třeba takto:
/usr/bin/awk -F';' '
/^&/ {
   filename=$1
   sub(/^&/,"",filename)
}
{
   print >> filename
}
' /cesta/k/vasemu/souboru
Prostě při každém průchodu, když řádek začne &, tak se položka do prvního středníku bez & uloží do proměnné filename. Každý řádek se přidá do souboru s aktuálním jménem filename.
18.1.2011 09:18 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Hehe, domácí úkol to není (respektive je to domácí úkol, kterej jsem dal sám sobě). Já to potřebuju do jednoho kšeftu, dělal jsem tyhle věci v pajtnu a zjistil jsem, že je možný je dělat rychlejc a elegantnějc. Dospěl sem k tomuto
grep ^\B 3212.vfk | sed 's/^\&[BD]\([A-Z]*\).*/grep ^\\\&[BD]\1\\\; 3212.vfk > ..\/parts\/\1_3212.vfk/' | bash
Ale to ten soubor prochází hodněkrát a navíc neumim udělat, aby to vzalo celej záznam i pokud obsahuje konec řádky. např:
&nejaka_tabulka;polozka;polozka;polozka¤
na¤
hodne¤
radku;polozka;polozka
z takovýho záznamu mě to veme jen ten první řádek. Řešení, který bych použil já by asi zahrnovalo \n¤ v regexp, protože regexp sem zvyklej používat, ale mam za to, že to musí jít udělat nějak jednodušejc a potřeboval bych nakopnout správným směrem. Nepotřebuju, aby za mě někdo dělal domácí úkoly...
Je.
btw: v čelákovicích 2* denně přesedam.
Nejsem blbý, jen se hloupě ptám
18.1.2011 10:25 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
awk by to mel zvladnout celkem s prehledem. Napr.:

$ cat s
&jina_tabulka;polozka;polozka;polozka3;polozka;polozka¤
polozka
&nejaka_tabulka;polozka;polozka;polozka¤
na¤
hodne¤
radku;polozka;polozka
&nejaka_tabulka;polozka;polozka;polozka¤
2;polozka;polozka
&jina_tabulka;polozka;polozka;polozka3;polozka;polozka
&nejaka_tabulka;polozka;polozka;polozka3;polozka;polozka
$ rm -f nejaka_tabulka jina_tabulka 
$ gawk 'BEGIN {RS = "[^¤]\n"; ORS = ""; FS = ";"} /^&/{file=$1; sub(/^&/,"",file); print $0 RT >> file}' < s
$ cat nejaka_tabulka 
&nejaka_tabulka;polozka;polozka;polozka¤
na¤
hodne¤
radku;polozka;polozka
&nejaka_tabulka;polozka;polozka;polozka¤
2;polozka;polozka
&nejaka_tabulka;polozka;polozka;polozka3;polozka;polozka
$ cat jina_tabulka 
&jina_tabulka;polozka;polozka;polozka3;polozka;polozka¤
polozka
&jina_tabulka;polozka;polozka;polozka3;polozka;polozka
18.1.2011 11:10 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Díky, to je přesně vono. Když koukám co ten awk umí, si řikam, že sem s pythonem celkem chodil s kanónem na vrabce. Díky moc.
Nejsem blbý, jen se hloupě ptám
18.1.2011 11:15 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Ještě jeden dotaz. Je mi celkem jasný co to dělá, až na dvě věci, to ORS, jakej má v tutom skriptu smysl??
Nejsem blbý, jen se hloupě ptám
18.1.2011 11:18 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Když to zrušim, přidá mě to prázdný řádky. Aha. asi chápu.
Nejsem blbý, jen se hloupě ptám
18.1.2011 11:23 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Když zrušim to RT na konci, tak to blbne, co má dělat to RT??
Nejsem blbý, jen se hloupě ptám
18.1.2011 11:58 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Viz man awk :-).
ORS je "Output Record Separator" - ten se zapisuje mezi jednotli zaznamy na vystupu.
RS je "Input Record Separator" - zjednodusene je to regularni vyraz podle ktereho se vstup rozklada na jednotlive zaznamy.
RT je "Record terminator" - do tehle promene se nastavi ten text co matchuje RS.

Pri parsovani vstupu awk v $0 vraci jen zaznam, bez tech casti ktere je oddeluji (RS). Takhle, jelikoz se matchuji dva znaky, by je ten vystup neobsahovl (jejich hodnota je ulozena v RT).
Kdyz vypustis to RT tak zaznami by neobsohovaly posledni znak a novy radek.
Defaultni hodnota je RS = ORS = new line.
18.1.2011 12:33 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Rozddělit soubor pomocí sed/awk/grep
Aha, musel jsem si to zkusit, takže to RT vlastně awk nevnímá jako součást záznamu, ale jako oddělovač, tudíž ORS = "" a RT dávám proto, že kdybych nedal ORS a RT, tak mi to místo posledního znaku a konce řádu ustříhne poslední dva znaky a přidá konec řádku. Jasný. Díky.
Nejsem blbý, jen se hloupě ptám

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.