我是 shell 脚本和 Linux 环境的新手。
在我的项目中,我试图从 httpd.conf 文件中搜索以下文本
<Directory '/somedir/someinnerdir'>
AllowOverride All
</Directory>
然后删除此文本并再次重写相同的文本。进行此重写的原因是该脚本将在第一次安装 Web 应用程序时运行,但它可能会在一段时间后再次运行,因为该 shell 脚本的其他部分也在执行其他任务。因此,第一次找不到该文本,只会被写入,但稍后在运行脚本时会再次找到该文本,需要将其删除并再次写入。
因此,我试图实现这一目标的脚本部分类似于:
grep -ve "<Directory '/somedir/someinnerdir'>\\nAllowOverride All\\n</Directory>" /etc/httpd/conf/httpd.conf > tmp_direct
echo -e "<Directory '/somedir/someinnerdir'>\\nAllowOverride All\\n</Directory>" >> tmp_direct
mv tmp_direct /etc/httpd/conf/httpd.conf
我目前没有代码在我面前,所以上面可能有一些语法错误,但逻辑/编码是相同的。
由于 grep 命令不支持多行搜索,因此上面的代码片段无法完成我想要实现的目标。
我的操作系统是 Fedora 8。
您能否在此代码中提出一些建议以实现所需的功能,或者可能是其他替代方案。
在这方面的任何帮助将不胜感激。
提前致谢。
感谢您的回复。
抱歉之前的错误代码。现在更正了。
Charlie 和 i-moan,由于可操作性限制,我将无法实现 sed 或 perl,因为它需要添加到我们将分发此项目的环境中。
史蒂夫,我想检查多行。我没有把它放在代码块中,所以它删除了目录标签。:(
所以我需要另寻出路。
再次感谢。
此致。