Недопустимое предыдущее регулярное выражение, заданное sed
Я и работал над файлом сценария sed, и при его запуске я сталкиваюсь с ошибкой "недопустимое Предыдущее регулярное выражение". Ниже приведен файл в полном объеме.
Я уже много искал на этом, как на этом сайте, так и где-то еще. Многие вопросы, заданные здесь, привели к необходимости либо расширить регулярные выражения, либо неправильно избежать. Я определил это как расширенное выражение уже так, как это необходимо для электронной почты замена.
#!/bin/sed -rf
#/find_this thing/{
#s/ search_for_this/ replace_with_this/
#s/ search_for_this_other_thing/ replace_with_this_other_thing/
#}
#Search and replace #ServerAdmin (with preceding no space) email addresses using a regular expression that has the .com .net and so on domain endings as option so it will find root@localhost and replace it in line with admin's email address.
ServerAdmin/ {
s/b[A-Za-z0-9._%-]+@(?:[a-zA-Z0-9-]+.)+(.[A-Za-z]]{2,4})?b/email@example.com/
}
#Enable user's Public HTML directories
/UserDir/ {
s/disable$/enable/
s/^#User/User/
}
#Replace the only #ServerName (with preceding no space) followed space and text with Our server ip
/#ServerName */ c ServerName server.ip.address.here/
Я звоню из термала as ./ config-apache.СЭД /и т. д./httpd/conf/и файл httpd.conf и получить это обратно.
/bin/sed: file ./apache-install.sed line 12: Invalid preceding regular expression
внутри строки vim 12 я идентифицирован как одиночный }
выше #Enable user's Public HTML directories
1 ответов
появляется GNU sed
не нравится PCRE без захвата обозначения:
...(?:...)...
попробуй:
s/\b[A-Za-z0-9._%-]+@([a-zA-Z0-9-]+\.)+(\.[A-Za-z]]{2,4})?\b/email@example.com/
GNU sed
кажется, все в порядке с этим. Тем не менее, у вас еще есть немного работы. Учитывая первую строку ниже в качестве ввода, выводом является вторая строка:
abc def@ghi.jk aaa
abc email@example.comjk aaa
есть две проблемы, дающие этот результат:
- на
]]
должен быть один]
. - вы ищете конечную точку в предыдущее регулярное выражение, поэтому вы не хотите его в последней части суффикса домена.
это работает:
s/\b[A-Za-z0-9._%-]+@([a-zA-Z0-9-]+\.)+([A-Za-z]{2,4})?\b/email@example.com/
abc def@ghi.jk aaa
abc email@example.com aaa