Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
Google Site



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #15 (permalink)  
Old 08-28-2008
Geregistreerde gebruiker
 

Join Date: Aug 2008
Posts: 27
Geef lijn per lijn op begrip van dit script, dat echt helpt me.
Sponsored Links
  #16 (permalink)  
Old 08-28-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.434

Code:
#
# DCDB - This block select all DCBEntry records
# and memorize Folder and TZ.
# => Folder[dcdb] and Tz[dcdb]
#

/^<DCDBEntry / {                    # Select DCDBEntry records
   split($0, dcdb, /"/);            #    Split record into dcdb array (sep=")
                                    #      dcdb[2]=dcdb, dcdb[4]=folder, 
                                    #      dcdb[6]=tz
   sub(/ *$/, "", dcdb[2]);         #    Remove trailing spaces from dcdb
   Folder[dcdb[2]] = dcdb[4];       #    Memorize folder for dcdb
       Tz[dcdb[2]] = dcdb[6];       #    Memorize tz for dcdb
   next;                            #    Proceed next input record
}                                   #

#
# LDS - This block select all LDSEntry records
# and memorize SiteUnit and Devide for folder,tz
# => SiteUnit[folder,tz] and Devicefolder,tz
#

/^<LDSEntry / {                     # Select LDSEntry records
   split($0, lds, /[":]/);          #    Split record into lds array (sep=" or sep=:)
                                    #      lds[2]=folder, lds[3]=siteunit
                                    #      lds[4]=device, lds[6]=tz
   folder = lds[2];                 #    Get folder
   tz     = lds[6];                 #    Get tz
   SiteUnit[folder, tz] = lds[3];   #    Memorize siteunit for folder,tz
     Device[folder, tz] = lds[4];   #    Memorize device for folder,tz
   next;                            #    Proceed next input record
}                                   #

#
# Input - These blocks proceed inputfiles
#

/^</ {                              # Select (and ignore) records from DCDB and LDS 
                                    # (DCDBEntry ans LDSEntry have already been processed)
   next;                            #    Procced next input record
}                                   #

FNR==1 {                            # Select first record of inputfile (logically all other files
                                    # have been processed in previus blocks).
   print $0, "Folder", "SU", "Dev"; #    Print first record (headers) and add new headers
   next;                            #    Proceed next input record
}                                   #

{                                   # Select all reamaining inputfile records
   dcdb_in = $2;                    #    Get dcdb from input record
   folder = Folder[dcdb_in];        #    Get memorized folder for this dcdb
   tz     =     Tz[dcdb_in];        #    Get memorized tz  for this dcdb
   su     = SiteUnit[folder, tz];   #    Get memorized siteunit for this forder,tz
   dev    =   Device[folder, tz];   #    Get memorized device for this forder,tz
   print $0, (folder ? folder : "?"), (su ? su : "?"), (dev ? dev : "?"); # Print record,
                                    #    folder, siteunit and device (unknown values are
                                    #    replaced by ?
   next;                            #    Proceed next input record
}                                   #

Jean-Pierre.
  #17 (permalink)  
Old 08-29-2008
Geregistreerde gebruiker
 

Join Date: Aug 2008
Posts: 27
Thanks a lot Jean
  #18 (permalink)  
Old 09-02-2008
Geregistreerde gebruiker
 

Join Date: Aug 2008
Posts: 27
Niet verplicht deze tijd

Laatst gewijzigd door Sandeep_Malik; op 10.17.2008 03:39..
  #19 (permalink)  
Old 09-02-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.434
Weet u zeker dat alle gegevens die beginnen met '<' in de dossiers DCDB.xml en LDS.xml?
Ik heb het getest becommentarieerde awk script zonder probleem:
Code:
> cat DCDB.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DCDBTable>
<DCDBEntry DCDB="0862976 " folder="768678" timeZone="2"/>
<DCDBEntry DCDB="0911297 " folder="975426" timeZone="1"/>
<DCDBEntry DCDB="0201347 " folder="1389781" timeZone="2"/>
<DCDBEntry DCDB="0800659 " folder="2035595" timeZone="4"/>
<DCDBEntry DCDB="0123033 " folder="2143699" timeZone="2"/>
<DCDBEntry DCDB="0911515 " folder="2315643" timeZone="1"/>
<DCDBEntry DCDB="0123913 " folder="2367867" timeZone="2"/>
<DCDBEntry DCDB="0713934 " folder="2407712" timeZone="5"/>
</DCDBTable>
> cat LDS-1.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LDSMappingTable>
<LDSEntry LDSKey="3351216:1:TV" LDSValue="7"/>
<LDSEntry LDSKey="1389781:1:VCR1" LDSValue="2"/>
<LDSEntry LDSKey="3351216:2:TV" LDSValue="2"/>
<LDSEntry LDSKey="3351216:3:TV" LDSValue="6"/>
<LDSEntry LDSKey="3351511:1:TV" LDSValue="10"/>
<LDSEntry LDSKey="3351511:1:VCR1" LDSValue="11"/>
<LDSEntry LDSKey="3351511:2:TV" LDSValue="4"/>
<LDSEntry LDSKey="3351511:2:VCR1" LDSValue="5"/>
</LDSMappingTable>
> cat LDS-2.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LDSMappingTable>
<LDSEntry LDSKey="3351217:1:XTV" LDSValue="7"/>
<LDSEntry LDSKey="1389782:1:XVCR1" LDSValue="2"/>
<LDSEntry LDSKey="3351217:2:XTV" LDSValue="2"/>
<LDSEntry LDSKey="3351217:3:XTV" LDSValue="6"/>
<LDSEntry LDSKey="3351512:1:XTV" LDSValue="10"/>
<LDSEntry LDSKey="3351512:1:XVCR1" LDSValue="11"/>
<LDSEntry LDSKey="3351512:2:XTV" LDSValue="4"/>
<LDSEntry LDSKey="3351512:2:XVCR1" LDSValue="5"/>
</LDSMappingTable>
> cat inputfile
1DATE HHIDLDS BothOff 91 NG A=D 90faulRoundOnOff OffOn OthersMATCHED NOMATCH MATCH%
0721 0201136 1 544 . . . 1 . . . 895 1 99.89
0721 0201347 1 1296 . . . . . . . 144 . 100.0
0721 0201347 2 818 . . . . . . . 622 . 100.0
0721 0201364 1 1123 . . . . . . . 317 . 100.0
0721 0201364 2 1327 . . . . . . . 113 . 100.0
> cat Malik.awk
#
# DCDB - This block select all DCBEntry records
# and memorize Folder and TZ.
# => Folder[dcdb] and Tz[dcdb]
#

/^<DCDBEntry / {                    # Select DCDBEntry records
   split($0, dcdb, /"/);            #    Split record into dcdb array (sep=")
                                    #      dcdb[2]=dcdb, dcdb[4]=folder,
                                    #      dcdb[6]=tz
   sub(/ *$/, "", dcdb[2]);         #    Remove trailing spaces from dcdb
   Folder[dcdb[2]] = dcdb[4];       #    Memorize folder for dcdb
       Tz[dcdb[2]] = dcdb[6];       #    Memorize tz for dcdb
   next;                            #    Proceed next input record
}                                   #

#
# LDS - This block select all LDSEntry records
# and memorize SiteUnit and Devide for folder,tz
# => SiteUnit[folder,tz] and Devicefolder,tz
#

/^<LDSEntry / {                     # Select LDSEntry records
   split($0, lds, /[":]/);          #    Split record into lds array (sep=" or sep=:)
                                    #      lds[2]=folder, lds[3]=siteunit
                                    #      lds[4]=device, lds[6]=tz
   folder = lds[2];                 #    Get folder
   tz     = lds[6];                 #    Get tz
   SiteUnit[folder, tz] = lds[3];   #    Memorize siteunit for folder,tz
     Device[folder, tz] = lds[4];   #    Memorize device for folder,tz
   next;                            #    Proceed next input record
}                                   #

#
# Input - These blocks proceed inputfiles
#

/^</ {                              # Select (and ignore) records from DCDB and LDS
                                    # (DCDBEntry ans LDSEntry have already been processed)
   next;                            #    Procced next input record
}                                   #

FNR==1 {                            # Select first record of inputfile (logically all other files
                                    # have been processed in previus blocks).
   print $0, "Folder", "SU", "Dev"; #    Print first record (headers) and add new headers
   next;                            #    Proceed next input record
}                                   #

{                                   # Select all reamaining inputfile records
   dcdb_in = $2;                    #    Get dcdb from input record
   folder = Folder[dcdb_in];        #    Get memorized folder for this dcdb
   tz     =     Tz[dcdb_in];        #    Get memorized tz  for this dcdb
   su     = SiteUnit[folder, tz];   #    Get memorized siteunit for this forder,tz
   dev    =   Device[folder, tz];   #    Get memorized device for this forder,tz
   print $0, (folder ? folder : "?"), (su ? su : "?"), (dev ? dev : "?"); # Print record,
                                    #    folder, siteunit and device (unknown values are
                                    #    replaced by ?
   next;                            #    Proceed next input record
}
> awk -f Malik.awk DCDB.xml LDS-1.xml LDS-2.xml inputfile
1DATE HHIDLDS BothOff 91 NG A=D 90faulRoundOnOff OffOn OthersMATCHED NOMATCH MATCH% Folder SU Dev
0721 0201136 1 544 . . . 1 . . . 895 1 99.89 ? ? ?
0721 0201347 1 1296 . . . . . . . 144 . 100.0 1389781 1 VCR1
0721 0201347 2 818 . . . . . . . 622 . 100.0 1389781 1 VCR1
0721 0201364 1 1123 . . . . . . . 317 . 100.0 ? ? ?
0721 0201364 2 1327 . . . . . . . 113 . 100.0 ? ? ?
>

Jean-Pierre.
  #20 (permalink)  
Old 09-09-2008
Geregistreerde gebruiker
 

Join Date: Aug 2008
Posts: 27
Niet verplicht deze tijd

Laatst gewijzigd door Sandeep_Malik; op 10.17.2008 03:40..
  #21 (permalink)  
Old 09-09-2008
aigles's Avatar
aigles aigles is offline Forum Advisor  
Geregistreerde gebruiker
 

Join Date: april 2004
Locatie: Bordeaux, Frankrijk
Berichten: 1.434

Code:
nawk -f Test.awk DCDB.xml LDS.xml input > input_new.txt

Jean-Pierre.
Sponsored Links
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Uit


Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Greping kolommen gegevens uit het bestand. esungoe Programmeren en Shell Scripting 6 08-05-2008 09:11
Het toevoegen van kop naar een bestaand bestand shash UNIX voor Dummies Questions & Answers 5 07-24-2008 08:46
Het toevoegen van kolommen in een bestand Figaro UNIX voor Dummies Questions & Answers 5 07-21-2008 02:50
Perl: het toevoegen van kolommen in het CSV-bestand met informatie in elke dolo21taf Programmeren en Shell Scripting 1 03-05-2008 02:52
Noodzaak voor het toevoegen van een lijn van de gegevens van reeds bestaande bestand in Unix .. charan81 Programmeren en Shell Scripting 4 01-21-2006 03:31



Alle tijden zijn GMT -4. Het is nu 07:52 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De UNIX-en Linux Forums Copyright © 1993-2010. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0