Portál AbcLinuxu, 10. května 2025 08:50

Dotaz: Jak dostanu vysledek grep do promennych

16.9.2011 08:55 jeleniste | skóre: 13 | blog: Prokustovo lože
Jak dostanu vysledek grep do promennych
Přečteno: 251×
Odpovědět | Admin
grep klatovy okresy.ascii kod okres
echo $kod
echo -------
echo $okres
mi nefunguje, s awkem se mi nechce patlat, jde to udelat nejak jednoduse??
Nejsem blbý, jen se hloupě ptám

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.9.2011 09:02 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
Odpovědět | | Sbalit | Link | Blokovat | Admin
Netuším, co je cílem, ale proměnnou naplníš

OKRES=$(příkaz generující text na stdout)

Pokud potřebuješ rozsekat text do sloupců, awk je triviální - výpis druhého sloupce:

cat txt | awk '{print $2;}'

Šlo by to i bashi přes reguláry, možností je spoustu. Záleží, kolik nad tím chceš strávit času, resp. jak často to poběží, jak moc to musí být optimalizované.
16.9.2011 09:14 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
tady mě poradili, jak výsledek read nahraju do dvou proměnných. Chtěl bysem to samý udělat s grepem. V zásadě mám tabulku kod okres, vysledek grepu je např "3100 hlavni_mesto_praha" a ja chci, aby se mi ten vysledek ulozil do dvou promennych kod a okres, podobne, jako v tom predchozim dotazu, ale ne z read ve smycce, ale z toho vygrepovanyho
Nejsem blbý, jen se hloupě ptám
Řešení 1× (jeleniste (tazatel))
16.9.2011 09:20 l4m4
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
K použití read ve smyčce tě přece nikdo nenutí, prostě použij read stejně jako tam.
16.9.2011 23:06 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
Netuším, co je cílem, ale proměnnou naplníš
OKRES=$(příkaz generující text na stdout)
a nebo:
OKRES=`příkaz generující text na stdout`
Řešení 1× (jeleniste (tazatel))
16.9.2011 09:18 Tomáš
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo "123456 klatovy"|grep klatovy |read kod okres ; echo $okres $kod

Případně si ještě přečíst význam proměné IFS

16.9.2011 09:26 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
to mi ale nechodí
~/jelen_dta/nacitani$ echo "123456 klatovy"|grep klatovy |read kod okres ; echo $okres $kod

~/jelen_dta/nacitani$ echo "123456 klatovy"|grep klatovy
123456 klatovy
~/jelen_dta/nacitani$

Nejsem blbý, jen se hloupě ptám
16.9.2011 09:38 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
To fungovat nemůže, protože pipa se spustí v subshellu a proměnné kod a okres se nedostanou do nadřazeného shellu. Klasický boj s bashem.

Ale bude fungovat

pavel@sara:~$ echo "123456 klatovy"|grep klatovy |( read kod okres ; echo $okres $kod ) klatovy 123456

Bohužel to ti taky nemusí vyhovovat, že budeš muset zbytek dělat v subshellu.

Šlo by to přeuspořádat, aby byl read v hlavním shellu.

Tyto vychytávky s bashem jsou ošklivé hacky, vše se musí pečlivě testovat. Pro složitější věci je lepší rovnou použít nějaký python, perl atd. Myslím to úplně vážně, ušetříš čas a hlavně nervy :)
16.9.2011 10:00 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
Díky moc.
Nejsem blbý, jen se hloupě ptám
16.9.2011 09:22 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Jak dostanu vysledek grep do promennych
Odpovědět | | Sbalit | Link | Blokovat | Admin
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, (c) 1999-2007 Stickfish s.r.o.