sed '/something interesting/,$d' < file > newfile
Which can be optimized to:
sed -n '/something interesting/q;p' < file > newfile
for sed
to quit as soon as it finds the pattern.
Which with the GNU implementation of sed
, as noted by @RakeshSharma, can be simplified to
sed '/something interesting/Q' < file > newfile
To truncate the file in-place, with ksh93
instead of bash
, you could do:
printf '' <>; file >#'*something interesting*'
<>;
is like the standard <>
redirection operator (open in read+write) except that the file is truncated at the end if the command is successful.
<#pattern
seeks to the start of the next line matching the pattern.
(note that it seems to work (with ksh93u+ at least) with printf ''
on stdout but not with some other builtin commands like true
, :
or eval
. Looks like a bug. Also it can't be the last command of a script (another bug)).
sed
andgrep
are notbash
commands; they are separate commands, which can be invoked from any shell you happen to be using. – Bob Eager Jul 22 '17 at 09:33