Sed replace specific line in file
Solution 1
It is straightforward. Use the s
command in sed
to search and replace.
sed 's/# autologin=dgod/autologin=ubuntu/' /path/to/file
If you see what you want, add -i
to change the file in place
sed -i 's/# autologin=dgod/autologin=ubuntu/' /path/to/file
Solution 2
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
Related videos on Youtube
lewis4u
Updated on September 18, 2022Comments
-
lewis4u over 1 year
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/startlxde
this line:
# autologin=dgod
I want to change to this
autologin=ubuntu
I 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.
-
Admin over 7 years
sed -i 's/^# autologin=.*/autologin=ubuntu/' /some/file
?
-
-
lewis4u over 7 yearsthe filename is /etc/lxdm/default.conf - so the full command should be like this? = sed -i 's/# autologin=dgod/autologin=ubuntu/' /etc/lxdm/default.conf
-
Zanna over 7 yearsyes, exactly like that @lewis4u
-
Tjorriemorrie over 2 yearsNo
/g
at the end? -
Zanna over 2 years@Tjorriemorrie
g
means apply the command to every occurrence on the line specified, which is not relevant to this case -
Gulzar over 2 years
sed 's/# 1/1' /etc/gai.conf
gives sed: -e expression #1, char 7: unterminated `s' command -
Zanna over 2 years@Gulzar yes, you need a final
/
before your closing quote, i.e.sed 's/# 1/1/' /etc/gai.conf