在特定块内的文本文件中查找并插入字符串

时间:2013-07-25 18:56:04

标签: bash shell insert

我有以下内容:

server {
            listen IP; 
            location /nginx-status {
            stub_status on;
            access_log   off;
            allow $IP;
            deny all;
        }

我的问题是,我需要在我的nginx.conf文件中的HTTP块中专门插入它。

这是nginx配置通常的样子:

http://wiki.nginx.org/FullExample

我不知道这是否可行。我猜想如果我在http块之后插入会更容易吗?

理想情况下,我想在BASH中这样做,但我愿意接受其他选择。

1 个答案:

答案 0 :(得分:1)

使用的一种方法。假设nginx.conf包含您在链接中提供的数据,并infile包含您要添加的内容:

vim -u NONE -N -c '
    set backup | 
    bn | 
    execute "normal ggyG" | 
    bn | 
    execute "normal! gg/^\\vhttp\>\<CR>f{%P" | 
    xa
' nginx.conf infile

它是如何运作的?

set backup创建nginx.conf附加~的备份。原件将就地修改。

两个文件之间的

bn更改。第一个execute命令将infile和第二个bn的所有内容复制到nginx文件。

第二个execute命令搜索以http开头的行,将光标放在左大括号(f{)中并使用%神奇地设置光标。关闭一个。然后使用P粘贴上一个execute命令中保存的内容。

xa保存已修改的文件并退出。