Voiko sed- awk- grep:ille ... avata jotain omaa aluetta niin ettei jokaisella kutsulla avattaisi omaa prosessia?
Ei voi. Nuo ovat erillisiä ohjelmia, joiden jokainen ajokerta edellyttää uuden prosessin luomista. Vaihtoehtona olisi muokata ja kääntää ohjelma kirjastoksi ja integroida toiminnallisuus komentotulkkiin. Sedin, Awk:n ja Bashin yhdistelmästä tulisi kyllä aikamoinen frankenshell.
Käytännössä voit kuitenkin usein tehdä yhdellä kutsulla paljon asioita, eli esim. sedille voisi putkittaa suuren määrän käsiteltäviä rivejä sen sijaan että kutsuisit ohjelmaa yksitellen jokaiselle riville.
Jos suorituskyky on oikeasti olennaista, katse kääntyy Go:n, Rustin, D:n tai C/C++:n suuntaan. Tai johonkin kymmenistä muista tehokkaista käännettävistä kielistä. Tulkattavista skriptikielistä Python ja Perl ovat huomattavasti Bashia kehittyneempiä ja niistä löytyy valmiina tai lisämoduuleina kaikki tarvittava.
Itse kirjoitan shell-skriptejä nimenomaan silloin kun on tarvetta ajaa järjestelmäkomentoja ja kutsua useita erillisiä binäärejä tai putkittaa asioita ohjelmien välillä. Komentotulkki toimii siis liimana tai purkkana, jolla rakennelma pystytetään nopeasti ja pienimmällä vaivalla. Jos taas on tarvetta laskea jotain tai vaikkapa pyöritellä merkkijonoja useamman säännöllisen lausekkeen läpi, otan käyttöön järeämmät työkalut. Yleensä Python on seuraava askel, mutta suorituskykykriittisen koodin tapauksessa on joskus parempi hypätä suoraan käännettäviin kieliin.