I have a Bash script that writes data into a log file, then from that I take out stuff I want using the sed
command. That gives me a file data.txt
. What I want to know is how I go about deleting specific line inside that data.txt
file.
For example:
123
456
789
I want to remove the 2nd line, containing 456
so that I only have
123
789
I tried with sed '2d' data.txt
but it doesn't work.
I use this command to create data.txt
from log.log
:
sed -nE '1s/.{1}(.{2}).*/\1/p;' log.log >> data.txt
Best Answer
Try this. This should work.
You have to add
-i
flag with sed command unless you are redirecting your output to a new file. If you don't add the-i
flag, sed will print the pattern space to STDOUT and will not make any changes to the original file.Automatic backup option
It is quite dangerous to modify a file without taking a proper backup. So sed has its native method to backup a file before editing which is
-i.bak
option.So in the above example if we use the backup option, the command would be.
So it will remove the first line from the file data.txt and will also make a backup copy of the original file with
.bak
extension.