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: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ářů: 1
včera 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ářů: 9
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
7.12. 23:33 | Nová verze

UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch (seznam podporovaných zařízení), oznámila vydání nové verze Ubuntu Touch OTA-6. Zdůrazněna jsou například vylepšení webového prohlížeče Morph.

Ladislav Hagara | Komentářů: 0
7.12. 21:33 | Komunita

Richard Hughes na svém blogu informuje, že se společnost AMI (American Megatrends Incorporated), největší dodavatel firmwarů a BIOSů (AMIBIOS, Aptio, ...), zapojila do projektu LVFS (Linux Vendor Firmware Service). Seznam projektem podporovaných zařízení by se měl tedy časem rozšířit.

Ladislav Hagara | Komentářů: 0
7.12. 20:11 | Komunita

Nadace pro svobodný software (FSF) informuje, že seznam doporučených svobodných distribucí GNU/Linuxu byl rozšířen o distribuci Hyperbola GNU/Linux-libre. Hyperbola vychází z Arch Linuxu a na rozdíl od něj splňuje požadovaná kritéria.

Ladislav Hagara | Komentářů: 6
7.12. 19:55 | IT novinky

Společnost Valve oznámila, že počítačová hra Counter-Strike: Global Offensive (Steam) je nově free to play. Hra Company of Heroes 2 (Steam) je do pondělí 10. prosince zdarma.

Ladislav Hagara | Komentářů: 0
7.12. 00:11 | Nová verze

Byla vydána verze 7.3.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.3. Podrobný přehled novinek v seznamu změn.

Ladislav Hagara | Komentářů: 3
6.12. 23:55 | Nová verze

Byla vydána verze 1.31 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

Ladislav Hagara | Komentářů: 0
Chystáte se přejít na Wayland na „desktopu“?
 (25%)
 (7%)
 (11%)
 (31%)
 (25%)
Celkem 102 hlasů
 Komentářů: 14, poslední včera 12:19
Rozcestník

Dotaz: zpracovani souboru awkem

3.1.2006 16:42 Karel Borkovec | skóre: 28 | blog: HP_NX9010 | Tábor
zpracovani souboru awkem
Přečteno: 64×
Dobrý den. Řeším následující problém: Mám takovýto výpis v souboru:
  uzivatel1 in                                       :             94M
  uzivatel1 out                                      :             30M
  uzivatel2 in                                       :            315M
  uzivatel2 out                                      :             45M
  uzivatel3 in                                       :            169M
  uzivatel3 out                                      :             50M
Potřeboval bych dostat do souboru toto (tzn. sečíst odeslaná i přijatá data a zobrazit takto):
uzivatel1;	124
uzivatel2;	360
uzivatel3;	219
Zkoušel jsem to pomocí AWKu, ale hrozně v tom tápu. Neporadil by někdo prosím? Dekuji

Odpovědi

3.1.2006 18:26 razor | skóre: 33
Rozbalit Rozbalit vše Re: zpracovani souboru awkem
Pokud by si to chtěl v pythonu, tak by to šlo nějak takhle (netvrdím, že by to nešlo napsat lépe :-) )
import re

input = file('souborA', 'r')
output = file('souborB', 'w')

result = {}
try:
	for line in input.readlines():
		splitted = re.split('\s', line)
		key = splitted[0]
		value = int(re.split('\D', splitted[3])[0])
		if result.has_key(key):
			result[key] = result[key] + value
		else:
			result[key] = value
	for pairs in result.items():
		output.write(pairs[0] + ';\t' + str(pairs[1]) + '\n')
finally:
    input.close()
    output.close()
3.1.2006 20:37 Bones | skóre: 15 | blog:
Rozbalit Rozbalit vše Re: zpracovani souboru awkem

AWK neumim (ale chci se ho nekdy naucit), tak ti alespon dam linky na dokumentaci.

Ceska: Tam najdes dalsi odkazy.
Anglicka: manualova stranka, info dokument, ci GAWK manual
3.1.2006 20:55 Franta Hanzlik
Rozbalit Rozbalit vše Re: zpracovani souboru awkem
Nepopisujete presne strukturu vstupnich dat, takze zhruba :
awk 'BEGIN{MU="";SUM=0}{SUM1=gensub(/[^0-9]$/,"",1,$NF) + 0; if (MU == $1 || MU == ""){MU=$1;SUM+=SUM1} else {printf "%s - %i\n",MU,SUM; SUM=SUM1;MU=$1}}END{printf "%s - %i\n",MU,SUM}'
- nebo udelat awk script (a chmod +x) :
#!/bin/awk -f

BEGIN{MU="";SUM=0}      # MU: Minuly Uzivatel, SUM: jeho soucet dat
{SUM1=gensub(/[^0-9]$/,"",1,$NF) + 0    # na konci posledni polozky (=objem) urizni vse mimo cislice (tady rezu 'M')
if (MU == $1 || MU == ""){      # uzivatel na predchozi radce je stejny jako na aktualni nebo zacinam
        MU=$1;SUM+=SUM1
} else {
        printf "%s - %i\n",MU,SUM; SUM=SUM1;MU=$1} #zmena, vypisuji a minuly=aktualni
}
END{printf "%s - %i\n",MU,SUM} # a dotisk posledniho po zpracovani souboru
4.1.2006 01:41 Andrej | skóre: 45 | blog: Republic of Mordor | Zürich
Rozbalit Rozbalit vše Proč AWK?

AWK je velmi dobrá věc, ale je to trochu jednodušší s drobnou pomocí sedu:


cat vstup.txt | \
sed 's/ *\([^ \t]*\).*:[ \t]*\([0-9]*\).*/\1;\t\2/' | \
awk '{ if ( par % 2 ) { sum += $2; print $1 "\t" sum; } else { sum = $2; } par++; }' \
> vystup.txt


Tady se jasně dělí úlohy: sed edituje, awk počítá. Doufám, že to takhle stačí a že to pomůže. Pokud potřebujete ještě něco jiného, stačí říct. :-)

ǑǦŹǓǕǙǞǺǨȞȬḔḦḰḾṊṎṸẄẌỖ
4.1.2006 02:22 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: zpracovani souboru awkem
To množství dat bude vždycky v megabajtech? Pokud ne, zde máte další řešení v pythonu:
#!/usr/bin/env python
import re

infile = open('infile.dat')
regexp = re.compile(r'^\s+(\S+) (in|out)\s+:\s+(\d+)(.*)')
result={}
for line in infile.xreadlines():
  user, direction, amount, unit = re.search(regexp, line).groups()
  amount = int(amount)

  if 'G' in unit:
    amount *= 1024*1024*1024
  elif 'M' in unit:
    amount *= 1024*1024
  elif 'k' in unit:
    amount *= 1024

  try:
    result[user] += amount
  except KeyError:
    result[user] = amount

infile.close()

outfile = open('outfile.dat', 'w')
for user, amount in result.items():
  outfile.write('%s;\t%d\n' %(user, amount))
outfile.close()
A vůbec - tohle by přece měl dělat ten původní program, který vygeneroval ten soubor. Nebude lepší spíš zasáhnout do zdrojáku než parsovat výstup? Hrozí nebezpečí, že se časem změní formát nebo že bude potřeba nějaká informace, kterou původní program měl, ale nevypsal.
4.1.2006 16:19 Karel Borkovec | skóre: 28 | blog: HP_NX9010 | Tábor
Rozbalit Rozbalit vše Re: zpracovani souboru awkem
Možná by stálo ze to zasáhnout do zdrojáků toho programu (ipac-ng), ale to už je totálně nad moje znalosti...
4.1.2006 16:19 Karel Borkovec | skóre: 28 | blog: HP_NX9010 | Tábor
Rozbalit Rozbalit vše Re: zpracovani souboru awkem
Všem mockrát děkuji!

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.