sed
Toto je starší verze dokumentu!
sed
- 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í):
+,|,(,),{,}, ..
sed.1462378749.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
