====== sed ======
* [[http://www.abclinuxu.cz/clanky/programovani/regularni-vyrazy|stručné základy regulárních výrazů]]
* sed nepodporuje pojmenované podvýrazy, pouze nepojmenované, pro referenci
* nepojmenovaných může být maximálně 10!!
* nelze zadat, které podvýrazy mají být referencovatelné (vždy jsou všechny)
* pokud se používá kvantifikátor, v referenci je poslední podvýraz
# echo "123456" | sed -n 's/^\(.\)\{4\}\(.\)/\1-\2/p'
4-56
# echo "123456" | sed -n 's/^\(.\)\{1\}\(.\)/\1-\2/p'
1-23456
* ale bacha!! reference se v rámci opakování přepisují. Pokud opakovaný výraz obsahuje například tři reference a v první iteraci se přepíše reference 3, ve druhé reference 2, jsou obě reference platné. Není to tak, že by se v druhé iteraci reference 3 přepsala na prázdnou. Podívejme se na příklad:
# echo "bla1bla1" | sed -n 's/\(\(bla1\)\|\(bla2\)\)\{2\}/\2--\3/p'
bla1--
# echo "bla1bla2" | sed -n 's/\(\(bla1\)\|\(bla2\)\)\{2\}/\2--\3/p'
bla1--bla2
# echo "bla2bla2" | sed -n 's/\(\(bla1\)\|\(bla2\)\)\{2\}/\2--\3/p'
--bla2
# echo "bla2bla1" | sed -n 's/\(\(bla1\)\|\(bla2\)\)\{2\}/\2--\3/p'
bla1--bla2
* speciální znaky, které se musí v sed escapovat (jinak se neberou jako řídící): ''+'', ''|'', ''('', '')'', ''{'', ''}'', ..