I am on Ubuntu 16.04 and I want to search files for let’s say “if” and I want to the output until “endif”. The file could look like this
if …
SOME CODE
endif
I can do this with grep -A9 if my_file | grep -B9 endif
.
This doesn’t works if the “if” clause is larger than 9 and if several “if” clauses are in the same file and if the first grep command contains several “if” clauses. The option -m1
in the second grep doesn’t help. Nested “if” clauses can be ignored. Has somebody an idea, maybe not with grep?
Difference to How do I grep for multiple patterns on multiple lines?
The question asks for a solution with
grep
which is answered already in the question:grep -A9 if my_file | grep -B9 endif
. The solution doesn’t work in my case but would work in the case of the other question.The proposed grep solutions of the other question don’t work (with Ubuntu?):
grep: ein nicht geschütztes ^ oder $ wird mit -Pz nicht unterstützt.
which is something likegrep: a not protected ^ or $ is not supported with -Pz
. I use the following:root:/tmp# cat file Some text begin Some text goes here. end Some more text root:/tmp# grep -Pzo "^begin\$(.|\n)*^end$" file grep: ein nicht geschütztes ^ oder $ wird mit -Pz nicht unterstützt
The proposed solutions search only for pattern which start at the beginning of the line if I interpret the proposed solution correctly. Even if I remove
^
the command doesn't work.
grep -Pz
. 3. What is a "pure Linux solution"? 4.grep
can look anywhere in the line. – muru Nov 14 '16 at 01:57^
does.pcregrep
and so on of the answer of steeldriver. But it is a matter of tasked, as I said. Anyway I have taken it out. 3) Yes, but even without^
it doesn’t work.Show lines between two patterns
. Whoever wants lines from the first line on, doesn't get his answer here – Bilow Dec 12 '18 at 13:08