Appending a line to a file only if it does not already exist
I need to add the following line to the end of a config file:
include "/configs/projectname.conf"
to a file called lighttpd.conf
I am looking into using sed
to do this, but I can't work out how.
How would I only insert it if the line doesn't already exist?
Just keep it simple :)
grep + echo should suffice:
grep -qxF 'include "/configs/projectname.conf"' foo.bar || echo 'include "/configs/projectname.conf"' >> foo.bar
-
-q
be quiet -
-x
match the whole line -
-F
pattern is a plain string - https://linux.die.net/man/1/grep
Edit: incorporated @cerin and @thijs-wouters suggestions.
Try this:
grep -q '^option' file && sed -i 's/^option.*/option=value/' file || echo 'option=value' >> file