我一直在使用grep命令从文件中搜索内容, 以下是命令及其输出: -
grep -i -A4 -B5 -w "servername.*xyz" httpd.conf.webserver.apache22.orig
<VirtualHost *>
ServerAdmin errorhelp@xyz.com
DocumentRoot "/opt/xyz/www"
DirectoryIndex error.html
ErrorDocument 404 /error.html
ServerName email-xyz.com
ProxyRequests off
ProxyPass / http://localhost/ui/pages/companies/xyz/
ProxyPassReverse / http://localhost/ui/pages/companies/xyz/
</VirtualHost>
--
<VirtualHost *>
ServerAdmin errorhelp@xyz.com
DocumentRoot "/opt/xyz/www"
DirectoryIndex error.html
ErrorDocument 404 /error.html
ServerName xyz.p.com
ProxyRequests off
ProxyPass / http://localhost/ui/pages/companies/xyz/
ProxyPassReverse / http://localhost/ui/pages/companies/xyz/
</VirtualHost>
有人可以建议我永久删除文件中的abve两节的方法。
以下是我尝试过的方法,有人可以告诉我我的错误: -
sed -i "/`grep -i -A4 -B5 -w "servername.*xyz" httpd.conf.webserver.apache22.orig`/d" httpd.conf.webserver.apache22.orig
在反引号中没有执行内容并将其传递给sed编辑器。
答案 0 :(得分:0)
您可以使用null RS
尝试此gnu-awk:
awk -v RS= -v ORS='\n\n' -v IGNORECASE=1 '!/ServerName[[:space:]]+.*xyz/' httpd.conf.webserver.apache22.orig
RS=
会在一条记录中生成整个<VirtualHost...</VirtualHost>
块,并使用!/ServerName[[:space:]]+.*xyz/
我们可以否定输出中的搜索结果。