Re: výstup programu vstupem dvou dalších

rga rga na centrum.cz
Pondělí Leden 25 15:30:37 CET 2010


> Pronikám pomalu do tajů skriptování a narazil jsem na jednu otázku na webu a zajímalo by mě, jak ji řešit:
>
> lpc status all
>
> vypíše záhlaví a status všech tiskáren.
> Mně zajímají např. jen tiskárny začínající názvem "hp-", chci je seřadit abecedně a zobrazit i záhlaví.
>
> lpc status all | grep -e "hp-" | sort
>
> mi udělá co potřebuji, ale nebude zde záhlaví.
> Lze nějak pomocí tee? udělat, že výstup
>
> lpc status all
>
> pošlu na
>
> head -n1
>
> a zároveň na
>
> grep -e "hp-" | sort
>
> aniž bych ho musel pouštět dvakrát?
>
> Našel jsem něco jako
>
> lpc status all | tee >(head -n1) >(grep -e "hp-" > a2) 
> ale tahle problematika přesměrování do subshellů je mi zatím dost nejasná ;-)
> Dá někdo tip, jestli lze a jak takovou situaci řešit?
> Jde spíš o možnosti/pohledy na věc, se "jen" učím...

Tak jsem to nakonec zbastlil takhle:

lpc status all | awk 'NR == 1 {print}; NR > 1 {print | "grep -e 'hp-' | sort"}'

Něco jako 

lpc status all | tee >(head -n1) >(grep -e 'hp-' | sort) > /dev/null

částečně "fungovalo", no občas proběhl dřív head, občas grep+sort,
takže výsledkem bylo, že občas bylo záhlaví až za datama...
...takže jsem byl zase průzkumníkem slepých uliček... ;-)



Další informace o konferenci Linux