Portál AbcLinuxu, 10. května 2025 08:50
grep klatovy okresy.ascii kod okres echo $kod echo ------- echo $okresmi nefunguje, s awkem se mi nechce patlat, jde to udelat nejak jednoduse??
Řešení dotazu:
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é.
Netuším, co je cílem, ale proměnnou naplníša nebo:
OKRES=$(příkaz generující text na stdout)
OKRES=`příkaz generující text na stdout`
echo "123456 klatovy"|grep klatovy |read kod okres ; echo $okres $kod
Případně si ještě přečíst význam proměné IFS
~/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$
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 :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.