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 13:33 | Nová verze

Po sedmi měsících vývoje od vydání verze 5.7 byla vydána verze 5.8 (YouTube) toolkitu Qt. Z novinek lze zmínit například Qt Lite pro vestavěná zařízení. Nově jsou plně podporovány moduly Qt Wayland Compositor (YouTube) a Qt SCXML (YouTube). Současně byla vydána verze 4.2.1 integrovaného vývojového prostředí (IDE) Qt Creator.

Ladislav Hagara | Komentářů: 0
dnes 11:52 | Pozvánky

Lednový Prague Containers Meetup se koná ve čtvrtek 26. ledna 2017 od 18:00 v Apiary, Pernerova 49, Praha 8. Přijďte se podívat na přednášky o Enterprise Kubernetes a Jenkins as a code.

little-drunk-jesus | Komentářů: 0
dnes 11:40 | Pozvánky

Program letošního ročníku konference Prague PostgreSQL Developer Days, která se koná již 15. a 16. února 2017 na ČVUT FIT, Thákurova 9, Praha 6, byl dnes zveřejněn. Najdete ho na stránkách konference včetně anotací přednášek a školení. Registrace na konferenci bude otevřena zítra (24. ledna) v brzkých odpoledních hodinách.

TomasVondra | Komentářů: 0
včera 02:20 | Zajímavý článek

David Revoy, autor open source webového komiksu Pepper&Carrot nebo portrétu GNU/Linuxu, upozorňuje na svém blogu, že nový Inkscape 0.92 rozbíjí dokumenty vytvořené v předchozích verzích Inkscape. Problém by měl být vyřešen v Inkscape 0.92.2 [reddit].

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

Øyvind Kolås, hlavní vývojář grafických knihoven GEGL a babl, které využívá grafický program GIMP, žádá o podporu na Patreonu. Díky ní bude moci pracovat na vývoji na plný úvazek. Milník 1000 $, který by stačil na holé přežití, se již téměř podařilo vybrat, dalším cílem je dosažení 2500 $, které mu umožní běžně fungovat ve společnosti.

xkomczax | Komentářů: 12
21.1. 23:54 | Pozvánky

DevConf.cz 2017, již devátý ročník jedné z největších akcí zaměřených na Linux a open source ve střední Evropě, proběhne od pátku 27. ledna do neděle 29. ledna v prostorách Fakulty informačních technologií Vysokého učení technického v Brně. Na programu je celá řada zajímavých přednášek a workshopů. Letos je povinná registrace.

Ladislav Hagara | Komentářů: 0
21.1. 22:11 | Nová verze

Byla vydána verze 1.0.0 emulátoru terminálu Terminology postaveného nad EFL (Enlightenment Foundation Libraries). Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
20.1. 17:00 | Nová verze

Byl vydán Docker 1.13. Přehled novinek na YouTube a v poznámkách k vydání na GitHubu. Docker umožňuje běh aplikací v softwarových kontejnerech (Wikipedia).

Ladislav Hagara | Komentářů: 6
20.1. 15:51 | Komunita

Mozilla.cz informuje, že nástroje pro webové vývojáře se možná oddělí od Firefoxu a stanou doplňkem. Nástroje pro webové vývojáře prošly velkým přepisem a tým, který se stará o jejich vývoj, by uvítal možnost jejich častějších aktualizacích nezávisle na vydávání nových verzí Firefoxu.

Ladislav Hagara | Komentářů: 10
20.1. 07:00 | Humor

Čtenářům AbcLinuxu vše nejlepší k dnešnímu Dni zvýšení povědomí o tučňácích (Penguin Awareness Day).

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (11%)
 (2%)
 (73%)
 (3%)
 (10%)
Celkem 372 hlasů
 Komentářů: 25, poslední 21.1. 13:34
Rozcestník
Reklama

Dotaz: awk jednoduchá string operace

16.10.2011 10:35 jarekkkk
awk jednoduchá string operace
Přečteno: 246×
Dobrý den, potřebuji ve své aplikaci uživateli zobrazovat číslo verze gcc a nevím jak mám vyselektovat to číslo z výpísu version:
gcc --version

gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
S awk neumím, děkuji za ochotu...

Řešení dotazu:


Odpovědi

pepe_ avatar 16.10.2011 11:09 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: awk jednoduchá string operace

Střílím od boku

#!/bin/bash
verze_gcc=$(`which gcc` --version | grep 'gcc' | awk '{printf $4 };')
if [ -n verze_gcc ];then
echo "Verze GCC je $verze_gcc"
else
echo "GCC není nainstalováno"
fi

pepe_ avatar 16.10.2011 11:12 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: awk jednoduchá string operace

oprava uvozovek

 

#!/bin/bash
verze_gcc=$(`which gcc` --version | grep 'gcc' | awk '{printf $4 };')
if [ -n "$verze_gcc" ];then
echo "Verze GCC je $verze_gcc"
else
echo "GCC není nainstalováno"
fi

16.10.2011 11:21 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
Co má vylepšit

`which gcc`

oproti

gcc

? Nepočítaje to, že při neexistujícím gcc první chybovou hlášku vyhodí už to which a následně se to pokusí spustit program jménem --version, což lze za zlepšení považovat jen stěží.

Jaký je význam spoustění awk na výstpu grepu?

Navíc to IMO vůbec neřeší problém, tedy co za roztodivné věci se mohou objevit v té závorce.
pepe_ avatar 16.10.2011 11:26 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: awk jednoduchá string operace

přidá tam i cestu k gcc

 

pepe@PC-Pepe:~$ which gcc
/usr/bin/gcc

pepe_ avatar 16.10.2011 11:28 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: awk jednoduchá string operace

pepe@PC-Pepe:~$ verze_gcc=$(`which lolo` --version | grep 'gcc' | awk '{printf $4 };')
--version: command not found
pepe@PC-Pepe:~$ echo $verze_gcc

pepe@PC-Pepe:~$

 

takze ikdyz gcc neni tak hlasku to vyplni ale script pozna ze gcc neni protoze promena verze_gcc nebude obsahovat nic

pepe_ avatar 16.10.2011 11:31 pepe_ | skóre: 46
Rozbalit Rozbalit vše Re: awk jednoduchá string operace

pokud chces zamezit i vypsani chyby tak is posli do NULL

 

 

verze_gcc=$(`which gcc` --version 2> /dev/null | grep 'gcc' | awk '{printf $4 };')

16.10.2011 11:39 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
A to je konkrétně k čemu? Celé to funguje stejně (ne-li lépe) i bez which.
16.10.2011 11:36 oiufoj
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
gcc --version | awk '{if( /^gcc/ ) print $NF; }'

(pricems predpokladame, ze cislo verze je posledni pole na radku zacinajicim gcc).
16.10.2011 11:47 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
Jenže to není ani náhodou.

GCC vypisuje jako verzi dost divoké věci. Např. na běžných linuxových distribucích to může vypadat:
gcc (Debian 4.3.2-1.1) 4.3.2
gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
gcc (SUSE Linux) 4.5.0 20100604 [gcc-4_5-branch revision 160292]
gcc (SUSE Linux) 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
etc.
16.10.2011 11:37 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
(a) Tvoje aplikace je v awk. V tom případě bych předpokládal, že umíš v awk použít regulární výraz a verzi z toho vyknousnout.

(b) Tvoje aplikace není v awk. V tom případě nerozumím požadavku na použití awk. Nemůže postě aplikace přečíst výstup gcc --version a vzít z něj verzi?

Nicméně abych jen nekafral, fungovat by mohlo toto:
awk '(NR==1){print gensub(/^gcc (\([^)]*\) *)?([0-9]+\.[^ ]+) .*/,"\\2","g")}'
Vypíše se čistě verze, bez závorek před, po, dat a kdovíčeho. Pokud závorek před může být víc (neviděl jsem), tak by se ? musel nahradit *.
16.10.2011 11:55 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
No, takže na Ubuntu není dost obecné ani tohle. Toto už by snad mohlo:
awk '{gsub(/\([^)]*\)/,"");gsub(/\[[^]]*\]/,"");print gensub(/.* ([0-9]+\.[^ ]+).*/,"\\1","g")}'
16.10.2011 12:09 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
S awk neumím ... tak použijte sed :-)
gcc --version | sed -n -e 's/^gcc ([^)]*) \([1-9.]*\)$/\1/p'
nebo kratší méně přesné:
gcc --version | sed -ne 's/^gcc.* \([1-9.]*\)$/\1/p'
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.10.2011 12:26 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
Funguje pouze na jediném z uvedených pěti příkladů výstupu gcc --version...
16.10.2011 12:40 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
Taky jsem to dělal jen na uvedený výstup :-)
gcc --version | sed -ne 's/^gcc.*\s\([0-9]\.[0-9].[0-9]\)\($\|\s.*$\)/\1/p'
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.10.2011 12:48 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
Drobná oprava: gcc --version | sed -ne 's/^gcc.*\s\([0-9]\.[0-9]\.[0-9]\)\($\|\s.*$\)/\1/p'
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.10.2011 13:30 benn | skóre: 18
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
A zjištění verze gcc pomocí dumpversion se ti nehodí?
gcc -dumpversion
Jinak v aplikaci je přístupné makro __VERSION__ od kompilátoru
printf(__VERSION__);
16.10.2011 14:55 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
Ad. -dumpversion
Tý jo, 300 let to používám a ani mě nenapadne, že by tam takového něco mělo být. :-(
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
16.10.2011 15:10 l4m4
Rozbalit Rozbalit vše Re: awk jednoduchá string operace
No vida.

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.