I’m trying to delete two lines either side of a pattern match from a file full of transactions. Ie. find the match then delete two lines before it, then delete two lines after it and then delete the match. The write this back to the original file.
So the input data is
D28/10/2011
T-3.48
PINITIAL BALANCE
M
^
and my pattern is
sed -i '/PINITIAL BALANCE/,+2d' test.txt
However this is only deleting two lines after the pattern match and then deleting the pattern match. I can’t work out any logical way to delete all 5 lines of data from the original file using sed.
sedwill do it:It works this way:
To prevent the appearance of pattern on the first string you should modify the script:
However, it fails in case you have another
PINITIAL BALANCEin string which are going to be deleted. However, other solutions fails too =)