История изменений
Исправление Kroz, (текущая версия) :
что делает SED в таком исполнении?
Экранирует спец. символы:
s/\\/\\\\/g; '\' -> '\\'
s/\//\\\//g; '/' -> '\/'
s/\./\\./g; '.' -> '\.'
s/\*/\\*/g; '*' -> '\*'
s/\^/\\^/g; '^' -> '\^'
s/\$/\\$/g; '$' -> '\$'
s/\[/\\[/g; '[' -> '\['
s/\]/\\]/g; ']' -> '\]'
А -regextype sed меняет их в обратную сторону?
Главная проблема с регулярками в том, что народ не договорился когда и что экранировать. Есть несколько нотаций. Например:
$ echo 'theeeee text ' | grep 'e\{2,5\}'
theeeee text
$ echo 'theeeee text ' | grep -E 'e\{2,5\}'
$ echo 'theeeee text ' | grep -E 'e{2,5}'
theeeee text
Как в find по умолчанию я не нашел. C -regextype sed
я гарантировал, что find будет вести себя в точности как sed. А для sed я знаю какие символы нужно экранировать: \/.*^$[] . Что и делает | sed '...'
.
Исходная версия Kroz, :
что делает SED в таком исполнении?
Экранирует спец. символы:
s/\\/\\\\/g; '\' -> '\\'
s/\//\\\//g; '/' -> '\/'
s/\./\\./g; '.' -> '\.'
s/\*/\\*/g; '*' -> '\*'
s/\^/\\^/g; '^' -> '\^'
s/\$/\\$/g; '$' -> '\$'
s/\[/\\[/g; '[' -> '\['
s/\]/\\]/g; ']' -> '\]'
А -regextype sed меняет их в обратную сторону?
Главная проблема с регулярками в том, что народ не договорился когда и что экранировать. Есть несколько нотаций. Например:
$ echo 'theeeee text ' | grep 'e\{2,5\}'
theeeee text
$ echo 'theeeee text ' | grep -E 'e\{2,5\}'
$ echo 'theeeee text ' | grep -E 'e{2,5}'
theeeee text
Как в find по умолчанию я не нашел. C -regextype sed
я гарантировал, что find будет вести себя в точности как sed. А для sed я знаю какие символы нужно экранировать: \/.*^$[] . Что и делает [incode]| sed '...'[/incode].