Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Script Using Nawk/Awk Help

Status
Not open for further replies.

beaster

Technical User
Aug 20, 2001
225
US
I need some assistance building a script to extract data from a log file.

The input file is quite large. The input file name is dcp_input.txt

The output file should be called dcp_output.txt

I need the script to search the input file for the text RXOTG-#
right below MO first and send to the output file. It should not look
for MO in the text that is similiar to <RXAPP:MO=RXOTG

Found text:
RXOTG-29

Then it needs to grab the first number and last number under the text DCP
and send it to the output file on the same line sending it as #-# like:

Found text:
1-12

Next I need it to look for the text DEV and grab the first number under
that text right after RBLT and the dash and divide it by 24 and send it
to the output file on the same line.

Found text and divided:
29

Finally it should look for the text DEV and grab the first number under
that text right after RBLT and also the last number and send it to the
output file on the same line sending it as #&&-# like:

Found text:
696&&-707

The divider between each significant portion is the text END or we can
use the text <RXAPP:MO=RXOTG-# which constitutes the next section.

At that point it should keep going to the end of the file putting each one on
seperate lines until finished.

-------------------------------------

FINAL OUTPUT USING EXAMPLE INPUT FILE

RXOTG-29 1-12 29 696&&-707
RXOTG-30 1-24 30 700&&-743

-------------------------------------

The input file looks like:

-------------------------------------

<RXAPP:MO=RXOTG-29;

RADIO X-CEIVER ADMINISTRATION
ABIS PATH STATUS

MO
RXOTG-29

DEV DCP APUSAGE APSTATE 64K TEI
RBLT3-696 1 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-697 2 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-698 3 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-699 4 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-700 5 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-701 6 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-702 7 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 IDLE NO
RBLT3-703 8 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-704 9 CONC CF/TRXC SIGNAL NO 62 0
RBLT3-705 10 UNDEF IDLE NO
RBLT3-706 11 CONC TRXC SIGNAL NO 1 2 4 5
RBLT3-707 12 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO

END

<RXAPP:MO=RXOTG-30;

RADIO X-CEIVER ADMINISTRATION
ABIS PATH STATUS

MO
RXOTG-30

DEV DCP APUSAGE APSTATE 64K TEI
RBLT3-720 1 UNDEF IDLE NO
RBLT3-721 2 UNDEF IDLE NO
RBLT3-722 3 UNDEF IDLE NO
RBLT3-723 4 UNDEF IDLE NO
RBLT3-724 5 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-725 6 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-726 7 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-727 8 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-728 9 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-729 10 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-730 11 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-731 12 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-732 13 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-733 14 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-734 15 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-735 16 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-736 17 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-737 18 MPLEX32 IDLE NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-738 19 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-739 20 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-740 21 MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
MPLEX16 SPEECH/DATA NO
RBLT3-741 22 CONC TRXC SIGNAL NO 0
RBLT3-742 23 CONC TRXC SIGNAL NO 6 8 9 10
RBLT3-743 24 CONC CF/TRXC SIGNAL NO 62 1 2 4 5

END
 
And what have you so far ?

Hope This Helps, PH.
Want to get great answers to your Tek-Tips questions? Have a look at FAQ219-2884 or FAQ222-2244
 
I have gone through some of my old working scripts and nothing I have will apply to this. This is pretty far over my head, sorry.
 
Something like this ?
awk '
$1=="MO" && NF==1{mo=1;next}
/^RXOTG-[0-9]+/ && mo==1{
rxo=$1;dcp1=dcp2=dev1=dev2=0
mo=2;next
}
/^RBLT/ && mo==2{
de=$1;sub(/.*-/,"",de)
dev2=de;dev1=(dev1?dev1:de)
dcp2=$2;dcp1=(dcp1?dcp1:$2)
next
}
/^END/{
print rxo" "dcp1"-"dcp2" "dev1/24" "dev1"&&-"dev2
mo=0
}' dcp_input.txt > dcp_output.txt

Hope This Helps, PH.
Want to get great answers to your Tek-Tips questions? Have a look at FAQ219-2884 or FAQ222-2244
 
somewhat ugly, should give you something to start:

Code:
/^MO/ { getline; f1=$0 }

/ DCP / {fldDCP=2; getline; f3=substr($1, index($1, "-")+1)/ 24}

/^END/ { printf("%s %d-%d %s %d&&-%d\n", f1, dcpMIN, dcpMAX, f3, devMIN, devMAX); fldDCP=0; dcpMIN=0 ; next}

(fldDCP == 2)  && ($0 !~ /^$/) && ($0 !~ /^[ ]+/ ) {
   if (dcpMIN==0) {
      dcpMIN=$fldDCP
      devMIN=substr($1, index($1, "-")+1)
   }
   else {
      dcpMAX=$fldDCP
      devMAX=substr($1, index($1, "-")+1)
   }
}

vlad
+----------------------------+
| #include<disclaimer.h> |
+----------------------------+
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top