I need help extracting blocks of information from a single text file into new files or some form where I can manipulate the data from each block.
Example:
[Block1]
this=that
here=there
why=why_not
[Block2]
this=those
here=there
why=because
I need to be able to display and/or manipulate the variables (which I can do if I can isolate the right one). I don’t mind writing each one of these blocks to a temp file
So, how would I change here=there
to here=anywhere
only in Block2
?
I’ve tried to figure this out using sed/awk but no avail.
Advertisement
Answer
Possible solution using Perl:
perl -00 -pe '/^[Block2]n/ or next; s/^here=there$/here=anywhere/m'
-p
tells perl to wrap the code in an implicit input/output loop (similar to sed).
-00
tells perl to process the input in units of paragraphs (instead of lines).
-e ...
specifies the program. We first make sure the paragraph starts with [Block2]
(otherwise we skip all other processing). Then we replace a line of the form here=there
with here=anywhere
.