Podobný projekt, co jde o kus dál, je https://xon.sh/, který poměrně radikálním způsobem míchá Python a shell do jednoho jazyka.
Ačkoli článek se na začátku tváří, že je pz alternativou k Bashi, vypadá to z příkladů spíš, že je alternativou samotného Awku. Prakticky všechny uvedené příklady vypadají, jako by je autor vzal z příkladů Awku, a přepsal do pz.
Zajímalo by mě, a v příkladech k tomu nic nebylo, jestli se v pz dají používat i víceřádkové pythoní skripty, a jak se tam odráží typická pythonní otravná "nutnost" odsazování vnořených bloků ...?
No, je to charakteristika dobrá jak na co. Pokud jde o kód, který se pak někam pushne a má trvalou hodnotu, tak ten by měl být korektně a systematicky poodsazovaný, ať už je napsaný v kterémkoli jazyce. Na druhou stranu, když jde o kód napsaný k tomu, aby byl spuštěn jen jednou, hned po napsání, a v nějakém experimentálním setupu, tak tam ta pedantičnost vyloženě překáží. A zrovna ten případ, kdy se python nějak používá přímo v terminálu (což jistě není IDE s dostatečně chytrým automatickým odsazováním) je toho příkladem (ne jediným).
Děkuji Vám za komentář.
> Prakticky všechny uvedené příklady vypadají, jako by je autor vzal z příkladů Awku
Čestně prohlašuji, že z příkladů AWKu jsem nečerpal, je možné, že řešíme stejnou potřebu.
> Multiline
Multiline možný je https://github.com/CZ-NIC/pz#multiline-statements nativně z bashe, ale pro větší než malé skripty bych použil jupyter nebo standalone skript. Nemínil jsem přidávat další syntaxi, abych nahradil řádkování a nutil uživatele něco se učit.
Panebože, tohle fakt neee.
Vzhledem k problémům Pythonu bych toto opravdu nechtěl. Ale chápu pravověrné nebo vědce, kteří jsou na tento jazyk a prostředí zvyklí díky výhodě obrovského množství speciálních knihoven. Za mně by ale scripty měly být krátké a využívat volání zkompilovaných, maximálně efektivních kódů, typově vyhraněných, ideálně v jazycích typu C/C++ nebo do budoucnosti třeba Rust.
"Kompilovaný efektivní kód."
To se nevylučuje. Klidně ať je v pozadí zkompilovaná super efektivní utilita a její použití má známou a dobře používatelnou syntaxi.
A to by měl být asi ten správný směr.
Najít vhodnou syntaxi, jak ty úloh obsluhovat a co to bude v pozadí chroustat, už by nemuselo být tak zásadní.
( updated POSIX rules )
Co se třeba parsování logů týče, limitem by měla být rychlost čtení z disku. Záleží na konkrétních use case. Je rozdíl se tam jednou za čas v něčem pohrabat a mít tam filtr, který ta data loví po minutě a předává někam dál.
Dakujem za zaujimavy clanok. V zsh
:
$ echo "ahoj" | pz s[1:3] zsh: no matches found: s[1:3]
a v bash
funguje, len pokial nematchne existujuci subor/adresar:
$ touch s1 $ echo "ahoj" | pz s[1:3] Exception: <class 'NameError'> name 's1' is not defined on line: ahoj
bolo by preto fajn vsetky priklady hodit do single-quotes:
$ echo "ahoj" | pz 's[1:3]' ho