I'm building a bash script for my virtual machine and I would like to know how to replace a specific line in this document:
[base]
## uncomment and set autologin username to enable autologin
# autologin=dgod
## uncomment and set timeout to enable timeout autologin,
## the value should >=5
# timeout=10
## default session or desktop used when no systemwide config
# session=/usr/bin/startlxdethis line:
# autologin=dgodI want to change to this
autologin=ubuntuI have tried with "tee" and "sed" but couldn't make it work. This should be very easy for someone who works with bash scripts more often than me.
12 Answers
It is straightforward. Use the s command in sed to search and replace.
sed 's/# autologin=dgod/autologin=ubuntu/' /path/to/fileIf you see what you want, add -i to change the file in place
sed -i 's/# autologin=dgod/autologin=ubuntu/' /path/to/file 6 I've found the most effective way to do this is actually to use the change syntax to set the exact value you want unless you are explicitly trying to enable a two way toggle. You can use this to change as well as uncomment a line no matter how it is commented, with # or // or <!--.
sed 's%searchTerm=% c searchTerm=desiredValue%' targetFile.txt