====== 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í): ''+'', ''|'', ''('', '')'', ''{'', ''}'', ..