I have a large file test.txt like this example:

before ...
before some line 
foo something interesting bar
after some lines
after ...

How do I create a new file with just the lines before the first occurrence of the string "something interesting" with basic bash commands like sed or grep (not awk, I need this on an embedded device without awk)?

  • 1
    A slight nitpick (and clarification). sed and grep are not bash commands; they are separate commands, which can be invoked from any shell you happen to be using.
    – Bob Eager
    Jul 22, 2017 at 9:33
  • Show all the file up to the match Jul 22, 2017 at 10:20

1 Answer 1

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)).

  • @RakeshSharma, good point. I've added it Jul 22, 2017 at 9:42
  • The first suggestion works perfectly, thanks. I spent some time to realize how to use it wit shell variable expansion: sed "/${VAR}/,$ d" - note the white space between $ and d.
    – pa4080
    Sep 14, 2018 at 22:52
  • And the GNU sed command to edit in place would simply be sed -i '/something interesting/Q' 'file'
    – Sadi
    Jan 31, 2021 at 13:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.