Grep 3 lines from a file

I have file, test.txt

UtranCellId                          MDN407WI1
administrativeState                  1 (UNLOCKED)
aseDlAdm                             500
aseUlAdm                             800
cellReserved                         1 (NOT_RESERVED)
dlCodeAdm                            95
hoType                               0 (IFHO_PREFERRED)
hsIflsMarginUsers                    0
hsIflsThreshUsers                    0
iflsMode                             2 (RAB_EST_AND_UPSWITCH_ATT)
locationAreaRef                      LocationArea=5071
maximumTransmissionPower             430
pathlossThreshold                    170
primaryCpichPower                    300
qQualMin                             -18
qRxLevMin                            -115
usedFreqThresh2dEcno                 -14
usedFreqThresh2dRscp                 -105
UtranCellId                          MDN094W1
administrativeState                  2 (LOCKED)
aseDlAdm                             400
aseUlAdm                             300
cellReserved                         1 (NOT_RESERVED)
dlCodeAdm                            95
hoType                               1 (GSM_PREFERRED)
hsIflsMarginUsers                    10
hsIflsThreshUsers                    10
iflsMode                             2 (RAB_EST_AND_UPSWITCH_ATT)
locationAreaRef                      LocationArea=5071
maximumTransmissionPower             449
pathlossThreshold                    170
primaryCpichPower                    330
qQualMin                             -18
qRxLevMin                            -115
usedFreqThresh2dEcno                 -12
usedFreqThresh2dRscp                 -105

I want to have the output like

UtranCellId   administrativeState   aseDlAdm   aseUlAdm       qQualMin
MDN407WI1   1   500   800 -18
      MDN094W1   2   400   300   -18

pls help

I don't understand. You say you want 3 lines from a file, but the 1st line of output you show comes from the first column of five (non-adjacent) input lines, and the 2nd and 3rd lines seem to come from the second column of five other non-adjacent lines.

What criteria are you using to select what you want to appear in the output?

file1.txt

UtranCellId                          MDN407WI1
administrativeState                  1 (UNLOCKED)
aseDlAdm                             500
aseUlAdm                             800
cellReserved                         1 (NOT_RESERVED)
dlCodeAdm                            95
hoType                               0 (IFHO_PREFERRED)
hsIflsMarginUsers                    0
hsIflsThreshUsers                    0
iflsMode                             2 (RAB_EST_AND_UPSWITCH_ATT)
locationAreaRef                      LocationArea=5071
maximumTransmissionPower             430
pathlossThreshold                    170
primaryCpichPower                    300
qQualMin                             -18
qRxLevMin                            -115
usedFreqThresh2dEcno                 -14
usedFreqThresh2dRscp                 -105
UtranCellId                          MDN094W1
administrativeState                  2 (LOCKED)
aseDlAdm                             400
aseUlAdm                             300
cellReserved                         1 (NOT_RESERVED)
dlCodeAdm                            95
hoType                               1 (GSM_PREFERRED)
hsIflsMarginUsers                    10
hsIflsThreshUsers                    10
iflsMode                             2 (RAB_EST_AND_UPSWITCH_ATT)
locationAreaRef                      LocationArea=5071
maximumTransmissionPower             449
pathlossThreshold                    170
primaryCpichPower                    330
qQualMin                             -18
qRxLevMin                            -115
usedFreqThresh2dEcno                 -12
usedFreqThresh2dRscp                 -105

---------- Post updated at 01:38 AM ---------- Previous update was at 01:37 AM ----------

file2.txt

UtranCellId MDN407WI1
administrativeState 1 (UNLOCKED)
aseDlAdm 500
aseUlAdm 800
qQualMin -18
UtranCellId MDN094W1
administrativeState 2 (LOCKED)
aseDlAdm 400
aseUlAdm 300
qQualMin -18

---------- Post updated at 01:39 AM ---------- Previous update was at 01:38 AM ----------

file3.txt

UtranCellId   administrativeState   aseDlAdm   aseUlAdm       qQualMin
MDN407WI1   1   500   800 -18
MDN094W1   2   400   300   -18

Please use code tags as required by forum rules!

I have to second Don Cragun, as it is a mystery to me what be your desired output and what be the logics to achieve it. Please explain in plain English what comes from where and goes to where, so we can start helping you.

Is this what you are looking for?

nawk '/UtranCellId/ || /administrativeState/ || /aseDlAdm/ || /aseUlAdm/ || /qQualMin/ {a[++k]=$1;b[++i]=$2}
END{
for (j=1;j<=5;j++)
{printf ("%s \t",a[j])
}
printf "\n"
for (j=1;j<=i;j++){
printf ("%s \t\t",b[j])
if ( j % 5 == 0)
{
printf "\n"
}
}
}'

i tried this one

awk -F"" ' BEGIN {
print "UtranCellId administrativeState aseDIAdm aseUIAdm qQualMin";
} /(UtranCellId|administrativeState|aseDIAdm|aseUIAdm|qQualMin)/ { si=$NF;getline;pn=$NF;getline;ld=$NF; print si, pn, ld; } ' file 1.txt

but the output is

UtranCellId administrativeState aseDIAdm aseUIAdm qQualMin
UtranCellId                          MDN407WI1 administrativeState                  1 (UNLOCKED) aseDlAdm                             500
qQualMin                             -18 qRxLevMin                            -115 usedFreqThresh2dEcno                 -14
UtranCellId                          MDN094W1 administrativeState                  2 (LOCKED) aseDlAdm                             400
qQualMin                             -18 qRxLevMin                            -115 usedFreqThresh2dEcno  

i'm looking for

UtranCellId   administrativeState   aseDlAdm   aseUlAdm       qQualMin MDN407WI1   1   500   800 -18 MDN094W1   2   400   300   -18

help...
Sorry, this is my first post in this forum..thanks for guiding

---------- Post updated at 11:14 AM ---------- Previous update was at 11:13 AM ----------

i mean the structure like file3.txt shown above

---------- Post updated at 12:58 PM ---------- Previous update was at 11:14 AM ----------

so many thanks Mr Aksijain,..so helpful

Although you didn't bother to improve your specification, I think I picked up on what you want.
Instead of splitting the header line into an array, and then test all the $1s against this array in a loop for each input line, I dreamed up this one replacing the header text with its value for every instance of the datasets:

awk     'NR==1          {Ln = "UtranCellId administrativeState aseDlAdm aseUlAdm qQualMin"  # header, used for data line format
                         print Ln                                                           # print header
                         tmp = Ln}                                                          # prepare data line
         match (Ln, $1) {if (RSTART == 1 && tmp != Ln) {print tmp; tmp = Ln}                # found new record - print old one, prepare new data line
                         sub ($1, sprintf ("%*s", RLENGTH, $2), tmp)                        # put data into data line with correct field lenght
                        }
         END            {print tmp                                                          # print last record
                        }
        ' file
UtranCellId administrativeState aseDlAdm aseUlAdm qQualMin
  MDN407WI1                   1      500      800      -18
   MDN094W1                   2      400      300      -18

If you need the entire state string incl. (LOCKED / UNLOCKED), make " +" the field separator, yielding

UtranCellId administrativeState aseDlAdm aseUlAdm qQualMin
  MDN407WI1        1 (UNLOCKED)      500      800      -18
   MDN094W1          2 (LOCKED)      400      300      -18