删除现有行以替换httpd.conf中的新值

时间:2017-02-20 21:32:34

标签: shell vim sed

LoadModule proxy_ftp_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_proxy_ftp.so
LoadModule proxy_http_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_proxy_http.so
LoadModule proxy_connect_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_proxy_connect.so
LoadModule cache_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_cache.so
LoadModule suexec_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_suexec.so
LoadModule disk_cache_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_disk_cache.so
LoadModule cgi_module /usr/jboss/jbossweb/navapp_ws1/modules/mod_cgi.so
LoadModule dtsagent /www/apps/dynatrace/dynatrace.so

我想找到 LoadModule dtsagent /www/apps/dynatrace/dynatrace.so 在此文件中删除所有LoadModule dtsagent ........

目前我正在使用它来添加同一块下面的行 grep -q -F 'LoadModule dtagent_module' $jvm_home/$webservers/conf/httpd.conf || sed "/^LoadModule/,/^$/!b;/^$/i\LoadModule dtagent_module /www/apps/dynatrace/$webservers/agent/lib64/libdtagent.so" -i file

2 个答案:

答案 0 :(得分:1)

使用全局前命令

如果您正在编辑Vim中的httpd.conf文件,则可以发出全局ex命令:

:g/^LoadModule dtsagent/d

简而言之,这只是意味着找到与模式匹配的所有行并删除:

^LoadModule dtsagent

我选择使用锚点^表示我们想要从行的开头找到这个模式。

最后,一旦找到匹配项,我希望删除该行,以便将删除行命令放在最后d

答案 1 :(得分:0)

对于sed很容易:

sed '/^LoadModule dtsagent/d' httpd.conf

sed将查找从/^LoadModule dtsagent/开始的任何行并删除该行。 " ^"表示该行的开头。如果您的搜索字词可以在该行中的任何位置,请将其删除。