Golang : Replace a parameter's value inside a configuration file example
Alright, putting this here for my own future reference. In this tutorial, we will explore how to read in a configuration(text) file, replace certain value of a parameter and write it back(update) into the file.
Basically, what this simple program does is to convert the entire configuration(text) file into a slice, scan for the parameter that we want to alter, update the parameter's value and write back to file.
Here you go!
package main
import (
"fmt"
"strings"
)
func main() {
input, err := ioutil.ReadFile(configFilename)
if err != nil {
log.Println(err)
}
// split into a slice
lines := strings.Split(string(input), "\n")
fmt.Println("before : ", lines)
// assuming that we want to change the value of thirdItem from 3 to 100
replacementText := "thirdItem = 100"
for i, line := range lines {
if equal := strings.Index(line, "thirdItem"); equal == 0 {
// update to the new value
lines[i] = replacementText
}
}
fmt.Println("after : ", lines)
// join back before writing into the file
linesBytes := []byte(strings.Join(lines, "\n"))
//the value will be UPDATED!!!
if err = ioutil.WriteFile(configFilename, linesBytes, 0666); err != nil {
log.Println(err)
}
}
You can play with a demo without modifying any file at https://play.golang.org/p/G8RKWdfh5hu
Hope this helps and happy coding!
References :
https://www.socketloop.com/references/golang-io-ioutil-writefile-function-example
https://www.socketloop.com/tutorials/golang-convert-string-to-byte-examples
See also : Golang : How to remove certain lines from a file
By Adam Ng(黃武俊)
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+19.5k Golang : How to count the number of repeated characters in a string?
+5.2k Linux/Unix/MacOSX : Find out which application is listening to port 80 or use which IP version
+5.4k Golang : Intercept, inject and replay HTTP traffics from web server
+6.8k Golang : Derive cryptographic key from passwords with Argon2
+15.3k Golang : Get timezone offset from date or timestamp
+8k Golang : Trim everything onward after a word
+11.7k Golang : Calculations using complex numbers example
+4.8k MariaDB/MySQL : Form select statement or search query with Chinese characters
+4.8k Chrome : How to block socketloop.com links in Google SERP?
+38.2k Golang : Read a text file and replace certain words
+18.1k Golang : Check if a directory exist or not
+17.7k Convert JSON to CSV in Golang