在文件中的某个位置后插入字符串

时间:2016-11-18 20:48:52

标签: go

我有这个文件:

upstream frontends {
    server service-example1.example.com;
    server service-example2.example.com;
}

server {
  listen 80;

  location / {
      proxy_pass http://frontends;
  }
}

我想要做的是删除并在上游前端部分添加行。删除行非常简单:

package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
)

func main() {
    content, err := ioutil.ReadFile("nginx.conf")
    if err != nil {
        panic(err)
    }

    lines := bytes.Replace(content, []byte("server service-example1.example.com;"), []byte(""), 1)
    fmt.Println(string(lines))
    err = ioutil.WriteFile("nginx.conf", lines, 0644)
    if err != nil {
        panic(err)
    }
}

然而,我发现添加我再次删除的同一行更加困难。我的方案是我要删除包含" 服务器service-example2.example.com; ",重新加载nginx conf的行。后来我想在它之前的位置添加相同的行并再次重新加载nginx。

我发现很难在文件中获得确切的字节位置,我想用*(f 文件)WriteAt 再次添加该行。我一直在看这个例子:https://play.golang.org/p/eaWYAkxyLI,但无法找到一个好方法。

任何人都知道如何解决这个问题?

0 个答案:

没有答案