douyao3895 2016-11-18 20:48
浏览 36

在文件中的特定位置之后插入字符串

I have this file:

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

server {
  listen 80;

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

What I want to do is to remove and add lines in the upstream frontends section. Removing lines is quite easy:

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)
    }
}

However, I find it a lot more difficult to add the same line that I removed again. My scenario is that I want to remove the line containing "server service-example2.example.com;", reload nginx conf. Later I want to add the same line at it's previous position and reload nginx again.

I find it difficult to get the exact byte position in the file where I want to add the line again with *(f File) WriteAt. I've been looking at this example: https://play.golang.org/p/eaWYAkxyLI, but cannot figure out a good way how to do it.

Anyone got any idea how I can solve this?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 R语言Rstudio突然无法启动
    • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
    • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
    • ¥15 用windows做服务的同志有吗
    • ¥60 求一个简单的网页(标签-安全|关键词-上传)
    • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
    • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
    • ¥100 为什么这个恒流源电路不能恒流?
    • ¥15 有偿求跨组件数据流路径图
    • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值