В потоковом редакторе sed, для того чтобы спецсимволы рассматривались как обычные символы, можно их экранировать обратным слешем. А можно в качестве разделителей полей вместо прямого слеша "/" использовать двоеточие ":".
Пример:
Нужно закомментировать в *.cpp файле строку "namespace prog1 {", то есть добавить перед строкой символы "//". Это можно сделать различными способами:
sed -i 's/namespace prog1 {/\/\/ namespace prog1 {/' file.cpp
sed -i 's:namespace prog1 {:// namespace prog1 {:' file.cpp
sed -i 's:namespace prog1 {:// &:' file.cpp
Кроме того, некоторые служебные символы, например "+", "*", "?" - надо экранировать обратным слешем. А служебные символы ".", "[", "]" - не нужно:
# echo _0000s_0001_unknown_2.tif | sed 's/_[0-9]\+[a-z]_[0-9]\+_//g' unknown_2.tif
Внимание! Еще одна особенность sed, как минимум версии 4.1.5, в том, что он не понимает метасиволов вида "\d", "\w" и.т.д. Вместо них нужно использовать [0-9] или [a-z].
Примечание
По умолчанию необходимо экранировать все спец. символы в regex'ах, что крайне затрудняет чтение масок. Для того, чтобы экранировать спец.символы только в случае описания в тексте их самих - включите расширенный режим regex выражений с помощью опции -r.
|