answered
2014-12-14 17:31:17 +0100
BTW: V demo testu nebylo nutné použít ani substr
ani length
ani awk
, bylo to pouze jedno z možných řešení, které se rozšířilo. Existují ale minimálně 2 způsoby, jak to zařídit bez použití awk
, a které se používaly během semestru/výuky.
awk
má tolik příkazů, že se je není možné naučit nazpaměť, pokud to člověk nepoužívá denně. Je potřeba znát způsob, jak se awk
používá, jak ho můžu použít a kdy se mi hodí. Stejně tak, jako se find
nehodí na výpis souborů v zadaném adresáři, tak se awk
také nehodí na všechno. Jinými slovy, "pokud jde něco udělat (pro mě) snáz, základními příkazy, které ovládám, nebudu vytahovat kanón na vrabce, když nevím, kam se strká do kanónu koule".
Pokud je mi známo, tak žádný příklad nemá napsáno: "zpracujte v awk
". Pokud ho někdo nechce používat, nemusí, řešení není nikdy jenom jedno. Pokud chceš použít awk
, v manuálu najdeš co potřenuješ. Doporučuji pročíst, alespoň zběžně, co se tam dá najít a pak když už to chci použít si vyhledám danou syntaxi/použití. A ano, existují funkce jako substr
, length
nebo třeba (g
)sub
, které se dají pěkně využít, ale pozor ať ti to spíš nezamotají.
Abych to shrnul, pokud chci používat awk
, je potřeba vědět, že se to píše nějak takhle awk 'podmínka {akce}'
, že existuje něco jako BEGIN
a END
, se píší středníky (nebo nové řádky) mezi jednotlivé příkazy, že se proměnné a řetězce používají podobně jako v céčku, že můžu jednotlivé pole na řádce adresovat pomocí $
a že existují nějaké vnitřní proměnné FS, OFS, RS, ORS, NF, NR, ... které mi mohou ulehčit spoustu práce (nebo také přidělat). Taky třeba co dělá print
a printf
. Běžné kontrukce se najdou na cvičeních a v přednáškách.
Malá poznámka nakonec: pozor na rozdíly mezi awk
, nawk
a gawk
.