Search code examples
sedlinestring-matching

Delete to end of line after a match, keep lines not matched


I have a file of the following form:

interesting text-MIB blah blah blah
VERY INTERESTING TEXT
interesting text-MIB blah blah blah

In each line containing the "-MIB" string, I would like to delete the text following this string, until the end of the line.

The following command seems to work as intended:

sed -i -n -e 's/-MIB.*$/-MIB/p' ./myfile

My problem is that it also deletes the lines where my pattern is not found. Here, the line "VERY INTERESTING TEXT" would be deleted. I am not really familiar with sed. What am i doing wrong? Is sed appropriate for this kind of treatment?


Solution

  • You need to leave out the -n option. Check out http://www.gnu.org/software/sed/manual/sed.html#index-g_t_002d_002dquiet-7