I’m trying to match a pattern from piped input and/or a file, and then remove from the matched lines to the end of the file, inclusive. I’ve looked everywhere, but can’t seem to find an expression that would fit my needs.
The following expression allows me to remove to the beginning of the stream, including the matched pattern:
sed -e '1,/Files:/d'
Given some sample data:
Blah blah blah
Foobar foo foo
Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3
-----THIS STUFF IS USELESS-----
BLEH BLEH BLEH
BLEH BLEH BLEH
Running the above expression produces:
Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3
-----THIS STUFF IS USELESS-----
BLEH BLEH BLEH
BLEH BLEH BLEH
I would like to achieve a similar effect, but in the opposite direction. Using the output from the previous expression, I want to remove from -----THIS STUFF IS USELESS----- to the end of the file, inclusive. It should produce (after going through the first expression):
Files:
somefiles.tar.gz 1 2 3
somefiles.tar.gz 1 2 3
I’m also open to using any other tools, as long as it is available on any other POSIX system and does not use version specific (e.g. GNU-specific) options.
The actual text can be found here: http://pastebin.com/CYBbJ3qr
Note the change from -----THIS STUFF IS USELESS----- to -----BEGIN PGP SIGNATURE-----.
why not
In a range expression like you have used, ‘,$’ will specify “to the end of the file”
output
With
GNU sed, you can dowhere
Qis similar toqquit command, but doesn’t print the matching line