grep the line only if next line matches

Hi

I have an Input of following sort

AAAA:
ProgName="PROGRAM"
BBBB:
ProgName="BBBBBB"
CCCC:
DDDD:
ProgName="PROGRAM"
SSSS:
ProgName="PROGRAM"
ZZZZ:
ProgName="PROGRAM"

I want to find the Lines which are followed by ProgName="PROGRAM"

Out Put
AAAA:
DDDD:
SSSS:
ZZZZ:

awk '/ProgName="PROGRAM"/ { print prv_line; next } { prv_line = $0 }' inputfile
sed -n "N;/\n.*PROGRAM/P;D" filename

perl -ne 'print if /THIS/../THAT/'

Thanks anbu aigles

Hi
Im very new to this :slight_smile:
i kinda have the same problem but I need lines followed by empty lines.
Input looks like this:

d:/bla1/bla/bla
d:/bla2/bla/bla

some text

d:/bla3/bla/bla
d:/bla4/bla/bla

I need the line d:/bla2/bla/bla

Can anyone help?

Thanks

awk '/^$/ { print prv_line; next } { prv_line = $0 }' file_name

thank you, but this will give me also the line "some text"
I only need the line d:/bla2/bla/bla

Thanks

So you need only the first record followed by empty line?

awk '/^$/{print prev;exit}{prev=$0}' infile

Thank you for your answers

Usually there is only one line but if it could be more :), so to be more exact the input could look like this:

d:/bla1/bla/bla
d:/bla2/bla/bla

some text

d:/bla3/bla/bla
d:/bla4/bla/bla

some text

d:/bla5/bla/bla
d:/bla6/bla/bla

I need only lines: d:/bla2/bla/bla and d:/bla4/bla/bla followed by empty lines

Thanks again

Use some pattern, something like:

awk '/^$/{if(prev~/^d:/)print prev}{prev=$0}' infile

Thank you!