i want to grab the the text between tok98 and 5678 and dump that out to a file.
if the tok98 and the 5678 was on the same line i can use this
sed -n 's/.*\(tok98\)\(.*\)\(5678\).*/\2/p' testfile.txt > text.dmp
but when the tokens are vertically spaced its not working, how can i rewrite this sed to work here
$ cat testfile.txt
do with > 9
tok98
fdf df s df sd f sd v
dvsdv dvf sd vs vs dv sdfsd
2323 2323 232 {}
sfdf sd f s df s df sf
5678
no way = true + 50
$
You can use /START/,/STOP/ pattern ranges in sed
/START/ and /STOP/ can be REs too
would print between the lines starting
tok98
and5678
and would not start or stop unless the lines begin with those strings.If you want to exclude the /START/ and /STOP/ then this should work
sed
by default does not process multiple lines, but this can be solved using a trick like:You just need to convert the newlines
\n
to some other character like,
and then convert them back to \n when done withsed
. You need to make sure that you input file does not have any comma.