Vraag : Ontleed autosys jil dossier gebruikend de hulpmiddelen van Unix

0.Still proberend om het antwoord aan
http://www.experts-exchang e.com/Soft ware/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html
Now neem ik Zuiver Unix of enkel draait de benadering van EXCEL,/>I behoefte
1.How kan ik doen het met de hulpmiddelen van Unix: perl/sed/ksh/awk?
2.How kan ik het met de macro van Excel doen? de structuur


The van dossier Jil is als dit:
/* backupJIL */

insert_job: backupJIL job_type: c
command: autorep - J ALLEN - q > /home/autosys/...p/autosys machine/>_jil_bkowner: autosys@machine
permission: gx, Duitsland, wx, we
date_conditions: 1
days_of_week: Turkije, wij, Th, Fr, sa
start_times: „17: 00 "
description: „Dagelijkse file van baandefinities "
std_out_file: /tmp/autosys_jil_backup.ou t
std_err_file: /tmp/autosys_jil_backup.er r
alarm_if_fail: 1
/* BC_mount */

insert_job: BC_mount job_type: c
box_name: Het bevel van SAN_test_refresh_box
: /sysadm/xp/bin/mountprodbc machine/>.sh eigenaar: autosys@/* BC_mount */

insert_job: BC_mount job_type: c
box_name: Het bevel van S.fresh_box
: /sysadm/xp/bin..odbc.sh
machine: machine
eigenaar: autosys@machine
toestemming: gx,/> voorwaarde wx beschrijving : std_err_file >/var/tmp/mountprodbc.log
: >/var/tmp/mountprodbc.err
alarm_if_fail: 1
 

Antwoord : Ontleed autosys jil dossier gebruikend de hulpmiddelen van Unix

Ik heb een gelijkaardige taak in Excel gedaan en het impliceerde de volgende basisstappen.

  • Krijg de gebruikers ingevoerd waar de dossiers worden gevestigd. 
  • Win een volledige lijst van dossiers terug die moeten worden verwerkt. 
  • Voor elk dossier: 
    • Open het dossier als afgebakend tekstdossier gebruikend Workbooks.OpenText (komen al uw rijen fundamenteel in kolom A 
    • Neem formules in kolommen in het geopende werkboek (B, C en D in mijn geval) op om elke lijn in de vereiste gegevens te ontleden 
    • Kopi�ër de ontlede gegevens in een ruwe gegevenslijst in het summiere werkboek (één rij per dossier duidelijk) 
    • Sluit het ruwe gegevensdossier aangezien het niet meer nodig is 
  • Volgende dossier 

Gebruik fundamenteel de bevoegdheid van Excel om elk dossier te openen, het, dan exemplaar de resultaten in uw summier blad ontleden dat de rijen omzet in kolommen aangezien u dit doet. Ik hield ook een kolom met voortkomende filename als deel van de samenvattende tabel. Ik kan geen voorbeeld vastmaken aangezien het persoonlijke info bevat van mensen maar de code zou u een idee moeten geven.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
Expliciete optie

Openbare sFolder als Koord
Openbare sFilename () als Koord
Openbare NFiles als Geheel

Sub GetFileList ()
Schemerige varFileList als Variant
Schemerige I als Geheel

    „Krijg de folder van de gebruiker“
    Met Application.FileDialog (msoFileDialogFolderPicker)
        . Toon
        Als .SelectedItems.Count = 0 dan Sub „geannuleerde gebruiker“ weggaan
        sFolder = .SelectedItems (1)
    Eind met
    
    „Krijg een lijst van alle dossiers in deze folder.“
    „Merk op dat dit niet recursief… is hoewel het zou kunnen zijn…“
    varFileList = GetFileNames (sFolder, „*.txt“)
    
    Als niet IsArray (varFileList) toen
        MsgBox „Geen gevonden dossiers. “, vbInformation
        Sub van de uitgang
    Eind als
    
    „Opstelling de filename serie op de geselecteerde folder“ wordt gebaseerd die
    NFiles = UBound (varFileList) + 1
    ReDim sFilename (1 aan NFiles)
    
    „Exemplaar filenames in een koordserie voor gebruik elders“
    Voor I = 0 aan UBound (varFileList)
        sFilename (I + 1) = CStr (varFileList (I))
    Volgende I
    
    OutputFilenames2XL
    ImportFileContent
Sub van het eind


Privé Functie GetFileNames (ByVal sPath als Koord, Facultatieve sFilter als Koord) als Variant
„   Keert een ééndimensionale serie met filenames terug“
„   Keert anders Vals terug“

Schemerig F als Koord
Schemerige I als Geheel
Schemerige FileList () als Koord

    Als sFilter = "" toen sFilter = „*.*“

    Selecteer Geval Right$ (sPath, 1)
      Geval „\“, „/“
         sPath = Left$ (sPath, Len (sPath) - 1)
    Uitgezocht eind

    Het Domein FileList van ReDim (0)

    F = Dir$ (sPath & „\“ & sFilter)
    Doe terwijl Len (F) > 0
        Het Domein FileList van ReDim (I) als Koord
        FileList (I) = F
        i = I + 1
        F = Dir$ ()
    Lijn
    
    Als Lege FileList (0 <> ) toen
        GetFileNames = FileList
    Anders
        GetFileNames = Vals
    Eind als    
De Functie van het eind


Privé SubOutputFilenames2XL ()
Schemerige iBaseRow als Geheel, iBaseCol als Geheel
Schemerige shTarget als Aantekenvel
Schemerige I als Geheel

    Reeks shTarget = Application.ActiveSheet
    iBaseRow = Waaier („BaseCell“). Rij
    iBaseCol = Waaier („BaseCell“). Kolom

    „Bevolk de kopbalgebieden“
    shTarget.Range („ImportDate“). Waarde = nu
    shTarget.Range („FolderPath“). Waarde = sFolder
    shTarget.Range („NFiles“) = NFiles
    
    „Bevolk filename kolom van de lijst“
    Voor I = 1 aan NFiles
        shTarget.Cells (iBaseRow + I - 1, iBaseCol). Waarde = sFilename (I)
    Volgende I

    „Gezette formule om transactieidentiteitskaart in eerste kolom“ te ontleden
    shTarget.Range (Cellen (iBaseRow, iBaseCol - 1), Cellen (iBaseRow + NFiles - 1, iBaseCol - 1)).FormulaR1C1 = „=MID (R [0] C [1], LEN (R [0] C [1]) - 14.8)“
Sub van het eind


Privé SubImportFileContent ()
Schemerige I als Geheel, j als Geheel
Schemerige shTarget als Aantekenvel
Schemerige iBaseRow als Geheel, iBaseCol als Geheel
Schemerige shSource als Aantekenvel
Schemerige sActiveFilename als Koord
Schemerige sFullPath als Koord
Schemerige iRowCount als Geheel
Schemerige iTargetColumn als Geheel
Schemerige rSourceRange als Waaier

    „De basisgegevens van de opslag voor het doelaantekenvel bouwen wij“
    Reeks shTarget = Application.ActiveSheet
    iBaseRow = Waaier („BaseCell“). Rij
    iBaseCol = Waaier („BaseCell“). Kolom
    
    
    „Verwerk nu elke die filename enkel in het aantekenvel“ wordt ingevoerd
    Application.ScreenUpdating = Vals
    Application.WindowState = xlMinimized
    Application.Calculation = xlCalculationManual
    Application.Visible = Vals
            
    „De vooruitgangsbar van de opstelling“
    Lading frmProgress
    frmProgress.ProgressBar.Max = NFiles
    frmProgress.ProgressBar.Value = 0
    frmProgress.Show
    
    Voor I = 1 aan NFiles
        sActiveFilename = sFilename (I)
        sFullPath = sFolder & „\“ & sActiveFilename
        
        De „invoer afgebakend tekstdossier“
        Workbooks.OpenText Filename: =sFullPath, _
        Oorsprong: =437, StartRow: =1, DataType: =xlDelimited, TextQualifier: = _
        xlDoubleQuote, ConsecutiveDelimiter: =False, Lusje: =True, Puntkomma: =False, _
        Komma: =False, Ruimte: =False, andere: =False, FieldInfo: =Array (1, 1), _
        TrailingMinusNumbers: =True
        
        De „opslag de het bladnaam en formaat/voegt vereiste formules toe“
        Reeks shSource = Application.ActiveSheet
        iRowCount = Application.WorksheetFunction.CountA (Kolommen („A: “))
        shSource.Range (Cellen (1, 2), Cellen (iRowCount, 2)).FormulaR1C1 = „=FIND ("": "", R [0] C [- 1])“
        shSource.Range (Cellen (1, 3), Cellen (iRowCount, 3)).FormulaR1C1 = „VERLATEN =IF ((R [0] C [- 2], 7) = ""- Commentaar "", 61, MEDIO VALUE ((R [0] C [- 2], 2, R [0] C [- 1] - 2)))“
        shSource.Range (Cellen (1, 4), Cellen (iRowCount, 4)).FormulaR1C1 = „=RIGHT (R [0] C [- 3], LEN (R [0] C [- 3]) - R [0] C [- 2] - 1)“

        „Zorg ervoor de cellen met de huidige slechts nodig gegevens (als de berekening aan handboek)“ wordt geplaatst worden bijgewerkt
        shSource.Calculate
        
        „Kopi�ër nu de resulterende ontlede gegevens in de correcte cellen over het doelaantekenvel“
        Voor j = 1 aan iRowCount
            iTargetColumn = CInt (shSource.Cells (j, 3). Waarde)
            Reeks rSourceRange = shSource.Cells (j, 4)
            shTarget.Cells (iBaseRow + I - 1, iBaseCol + iTargetColumn). Waarde = rSourceRange.Value
        Volgende j
        
        „Tenslotte dicht het bronwerkboekdossier aangezien wij met het“ gebeëindigd zijn
        Werkboeken (sActiveFilename). Dichte SaveChanges: =False
        
        frmProgress.ProgressBar.Value = I
        frmProgress.Repaint
        
    Volgende I
    
    shTarget.Columns („C: BK“) .EntireColumn.AutoFit
    
    frmProgress.Hide
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Application.ScreenUpdating = Waar
    Application.WindowState = xlMaximized
    Application.Visible = Waar
Sub van het eind
Andere oplossingen  
 
programming4us programming4us