如何将文本插入conf文件?

发布于 2024-10-29 09:20:32 字数 459 浏览 6 评论 0原文

nginx.conf 中,我有:

server {
  listen 81;
  ...snip...
}  

我希望文件看起来像这样:

server {
  listen 81;
  if (-f $document_root/system/maintenance.html) {
    return 503;
  }
  ...snip...
}  

因此,只有文本 (if..) 尚不存在时才应插入。

这可以在命令行中使用一些内置程序吗?

例如:

  • 打开一个文件,
  • 查看其中是否包含特定文本,
  • 如果没有,则找到特定文本(listen 81;),并在插入几行文本后的下一行

In nginx.conf I have:

server {
  listen 81;
  ...snip...
}  

I want the file to look like this:

server {
  listen 81;
  if (-f $document_root/system/maintenance.html) {
    return 503;
  }
  ...snip...
}  

So the text (if..) should only be inserted if it does not already exist.

Is this possible to do using some in-built program at the command line?

Something like:

  • Open a file
  • See if it has certain text in it
  • If it does not then locate certain text (listen 81;) and on the next line after it insert a few lines of text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神爱温柔 2024-11-05 09:20:32

这是 sed 的工作,已包装在 shell 脚本中。完全未经测试;调用为“./script /path/to/nginx.conf”;请注意,它不会查找您想要添加的完整文本,而只会查找第一行中希望足够长的标记。

#! /bin/sh

if grep -q "document_root/system/maintenance" "$1"
then :
else
     set -e
     sed < "$1" > "$1.tmp" \
     '/listen 81;/a\
  if (-f $document_root/system/maintenance.html) {\
    return 503;\
  }
  '
     mv -f "$1.tmp" "$1"
fi

This is a job for sed, wrapped up in a shell script. Completely untested; invoke as "./script /path/to/nginx.conf"; note that it does not look for the complete text you wanted to add, only a hopefully-sufficiently-long token from its first line.

#! /bin/sh

if grep -q "document_root/system/maintenance" "$1"
then :
else
     set -e
     sed < "$1" > "$1.tmp" \
     '/listen 81;/a\
  if (-f $document_root/system/maintenance.html) {\
    return 503;\
  }
  '
     mv -f "$1.tmp" "$1"
fi
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文