Jestem i pracowałem nad plikiem skryptu sed i podczas uruchamiania go pojawia się błąd "Niepoprawne poprzedzenie wyrażenie regularne". Poniżej znajduje się plik w całości.Nieprawidłowe poprzednie wyrażenie regularne podane przez sed
Zrobiłem już wiele wyszukiwania na ten temat, zarówno na tej stronie i gdzie indziej. Wiele zadawanych tutaj pytań spowodowało, że trzeba rozszerzyć wyrażenia regularne, aby coś uniknęło niepoprawnie. Zdefiniowałem to jako rozszerzony wyraz, ponieważ jest potrzebny do zastąpienia wiadomości e-mail.
#!/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 [email protected] and replace it in line with admin's email address.
ServerAdmin/ {
s/\b[A-Za-z0-9._%-][email protected](?:[a-zA-Z0-9-]+\.)+(\.[A-Za-z]]{2,4})?\b/[email protected]/
}
#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/
Wołam go z Termal jako ./config-apache.sed /etc/httpd/conf/httpd.conf i dostać to zwracane.
/bin/sed: file ./apache-install.sed line 12: Invalid preceding regular expression
wewnątrz linii vim 12 jest i dentified jako jednolitego }
powyżej #Enable user's Public HTML directories
bardzo doceniane, złapałem]] miałem tam jednak trzymane z widokiem na drugą kropkę. Doprowadziło mnie to do szału ostatniej nocy. Dam mu wir i zobaczę, czy da mi to, czego szukałem. –
To rozwiązanie wymaga naprawy po usunięciu notacji PCRE i przechwytywaniu opcjonalnym, a także dopasowaniu adresu "@ localhost". Jednak podczas działania poprawionego skryptu pokazuje on, że zastępuje elementy, gdy zrzuca conf do STDOUT, ale przy ponownym analizie za pomocą 'sed -rne '/ \ b [A-Za-z0-9 ._% -] + @ ([a-zA-Z0-9 -] (\.)?) + ([A-Za-z] {2,4})? \ b/p '/ etc/httpd/conf/httpd.conf' to pokazuje że nie wprowadzono żadnych zmian. –
Czy chcesz dołączyć opcję -i (lub -i)? Tak, aby nadpisała oryginalny plik? (Przy założeniu, że masz GNU 'sed', oczywiście.) (Dla e-maili" localhost ", myślę, że potrzebujesz po prostu drugiego wyrażenia, na pewno będzie to łatwiejsze niż wrzucenie go do tego, którego już masz.) –