Как заменить определенную строку в текстовом файле на Golang?

Пользователь

от ottilie.farrell , в категории: Golang , год назад

Как заменить определенную строку в текстовом файле на Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jensen , год назад

@ottilie.farrell Вы можете заменить определенную строку в текстовом файле на Golang используя код ниже. Алгортим довольно таки прост: читаем файл построчно, затем сравниваем и ищем нужную строку, генерируем нужный массив строк и записываем обратно в файл:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main

import (
   "bufio"
   "io/ioutil"
   "log"
   "os"
   "strings"
)

func main() {
   search := "Нужная строка"
   replace := "замена"
   filePath := "/tmp/test.txt"

   file, err := os.Open(filePath)
   if err != nil {
      log.Fatal(err)
   }
   defer file.Close()

   scanner := bufio.NewScanner(file)
   var lines []string
   for scanner.Scan() {
      text := scanner.Text()
      if scanner.Text() == search {
         text = replace
      }

      lines = append(lines, text)
   }

   if err := scanner.Err(); err != nil {
      log.Fatal(err)
   }

   err = ioutil.WriteFile(filePath, []byte(strings.Join(lines, "\n")), 0644)
   if err != nil {
      log.Fatalln(err)
   }
}