如何将文本插入conf文件?

时间:2011-04-04 22:54:57

标签: linux text-processing

nginx.conf我有:

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

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

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

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

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

类似的东西:

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

1 个答案:

答案 0 :(得分:1)

这是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