Frage : Autosys jil Akte using Unix-Werkzeuge analysieren

0.Still, das versucht, die Antwort auf
http://www.experts-exchang e.com/Soft ware/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html
Now nehme ich, reines Unix oder gerade EXCEL-Annäherung,
I Notwendigkeit, alle Reihen in Spalten mit Titeln im Allgemeinen zu schwenken, wenn der Spaltenname vor „ist: “ an jeder Linie
1.How kann ich tue sie mit Unix-Werkzeugen: Perl/Sed/KSH/awk?
2.How kann ich tun sie mit Excel-Makro?


The Struktur der Jil Akte ist so:
/* ----------------- backupJIL ----------------- *

insert_job: backupJIL job_type: c
command: autorep - J ALLES - q > /home/autosys/...p/autosys _jil_bk
machine: machine
owner: autosys@machine
permission: gx, GE, wx, we
date_conditions: 1
days_of_week: tu, wir, Th, Franc, sa
start_times: „17: 00 "
description: „Tägliche Unterstützung der Jobdefinitionen "
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: SAN_test_refresh_box
Befehl: /sysadm/xp/bin/mountprodbc .sh
Maschine: b_dexter
Inhaber: autosys@/* ----------------- BC_mount ----------------- *

insert_job: BC_mount job_type: c
box_name: S.fresh_box
Befehl: /sysadm/xp/bin..odbc.sh
Maschine: machine
Inhaber: autosys@machine
Erlaubnis: gx, wx
Zustand: Erfolg (Check_BC_Status)
Beschreibung: „Das BCs das std_out_file an der Maschine anbringen "
: >/var/tmp/mountprodbc.log
std_err_file: >/var/tmp/mountprodbc.err
alarm_if_fail: 1
 

Antwort : Autosys jil Akte using Unix-Werkzeuge analysieren

Ich habe eine ähnliche Aufgabe in Excel getan und es bezog die folgenden grundlegenden Schritte mit ein.

  • Die Benutzer veranlassen, einzugeben auf, wo die Akten lokalisiert werden. 
  • Eine volle Liste der Akten zurückholen, die verarbeitet werden müssen. 
  • Für jede Akte: 
    • Die Akte als abgegrenzte Textdatei using Workbooks.OpenText öffnen (im Allgemeinen erben alle Ihre Reihen Spalte A 
    • Formeln in Spalten im geöffneten Arbeitsbuch (B, C und D in meinem Fall) einsetzen um jede Linie in die erforderten Daten zu analysieren 
    • Die analysierten Daten in eine Tabelle der rohen Daten im zusammenfassenden Arbeitsbuch (eine Reihe pro Akte offensichtlich) kopieren 
    • Die rohe Datei schließen, wie sie nicht mehr benötigt wird 
  • Folgende Akte 

Die Energie von Excel im Allgemeinen verwenden, jede Akte zu öffnen, sie analysieren, dann die Resultate in Ihr zusammenfassendes Blatt kopieren, welches die Reihen in Spalten umwandelt, wie Sie so tun. Ich hielt auch eine Spalte mit dem entstehenden Dateinamen als Teil der zusammenfassenden Tabelle. Ich kann ein Beispiel nicht anbringen, da es persönliches Info der Leute enthält, aber der Code Ihnen eine Idee geben sollte.

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:
6:
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:
Wahl ausdrücklich

Allgemeines sFolder als Schnur
Allgemeines sFilename () als Schnur
Allgemeines NFiles als ganze Zahl

VorGetFileList ()
Schwaches varFileList als Variante
I als ganze Zahl verdunkeln

    „Das Verzeichnis vom Benutzer erhalten“
    Mit Application.FileDialog (msoFileDialogFolderPicker)
        . Erscheinen
        Wenn .SelectedItems.Count = 0 herausnehmen dann Unterseeboot „den annullierten Benutzer“
        sFolder = .SelectedItems (1)
    Ende mit
    
    „Eine Liste aller Akten in diesem Verzeichnis erhalten.“
    „Merken, dass dieses nicht… rekursiv ist, obgleich es sein könnte…“
    varFileList = GetFileNames (sFolder, „*.txt“)
    
    Wenn nicht IsArray (varFileList) dann
        MsgBox „keine Akten gefunden. “, vbInformation
        Unterseeboot herausnehmen
    Beenden wenn
    
    „Die Dateinamereihe gründen, die basiert auf dem vorgewählten Verzeichnis“
    NFiles = UBound (varFileList) + 1
    ReDim sFilename (1 zu NFiles)
    
    „Die Dateinamen in eine Schnurreihe für Gebrauch anderwohin kopieren“
    Für i = 0 zu UBound (varFileList)
        sFilename (i + 1) = CStr (varFileList (i))
    Zunächst I
    
    OutputFilenames2XL
    ImportFileContent
Enden-Unterseeboot


Private Funktion GetFileNames (ByVal sPath als Schnur, wahlweise freigestelltes sFilter als Schnur) als Variante
„   Bringt eine eindimensionale Reihe mit Dateinamen“ zurück
„   Bringt anders falsches“ zurück

Schwaches f als Schnur
I als ganze Zahl verdunkeln
FileList () als Schnur verdunkeln

    Wenn sFilter = "" dann sFilter = „*.*“

    Fall Right$ (sPath, 1) vorwählen
      „\“ Umkleiden, „/“
         sPath = Left$ (sPath, Len (sPath) - 1)
    Ende auserwählt

    ReDim Konserve FileList (0)

    f = Dir$ (sPath u. „\“ u. sFilter)
    Tun während Len (f) > 0
        ReDim Konserve FileList (i) als Schnur
        FileList (i) = f
        I = i + 1
        f = Dir$ ()
    Schleife
    
    Wenn FileList (0) <> sich dann leeren
        GetFileNames = FileList
    Sonst
        GetFileNames = falsch
    Beenden wenn    
Funktion beenden


Privates Unterseeboot OutputFilenames2XL ()
Schwaches iBaseRow als ganze Zahl, iBaseCol als ganze Zahl
Schwaches shTarget als Arbeitsblatt
I als ganze Zahl verdunkeln

    shTarget = Application.ActiveSheet einstellen
    iBaseRow = Strecke („BaseCell“). Reihe
    iBaseCol = Strecke („BaseCell“). Spalte

    „Die Überschriftfelder bevölkern“
    shTarget.Range („ImportDate“). Wert = jetzt
    shTarget.Range („FolderPath“). Wert = sFolder
    shTarget.Range („NFiles“) = NFiles
    
    „Dateinamespalte der Tabelle bevölkern“
    Für i = 1 zu NFiles
        shTarget.Cells (iBaseRow + i - 1, iBaseCol). Wert = sFilename (i)
    Zunächst I

    „Formel setzen, um Verhandlungidentifikation in erste Spalte zu analysieren“
    shTarget.Range (Zellen (iBaseRow, iBaseCol - 1), Zellen (iBaseRow + NFiles - 1, iBaseCol - 1)) .FormulaR1C1 = „=MID (R [0] C [1], LEN (R [0] C [1]) - 14.8)“
Enden-Unterseeboot


Privates VorImportFileContent ()
I als ganze Zahl, J verdunkeln als ganze Zahl
shTarget als Arbeitsblatt verdunkeln
iBaseRow als ganze Zahl, iBaseCol verdunkeln als ganze Zahl
shSource als Arbeitsblatt verdunkeln
sActiveFilename als Schnur verdunkeln
sFullPath als Schnur verdunkeln
iRowCount als ganze Zahl verdunkeln
iTargetColumn als ganze Zahl verdunkeln
rSourceRange als Strecke verdunkeln

    „Niedrige Daten des Speichers für das Zielarbeitsblatt, das wir errichten“
    shTarget = Application.ActiveSheet einstellen
    iBaseRow = Strecke („BaseCell“). Reihe
    iBaseCol = Strecke („BaseCell“). Spalte
    
    
    „Jeden Dateinamen jetzt verarbeiten, der gerade importiert wird zum Arbeitsblatt“
    Application.ScreenUpdating = falsch
    Application.WindowState = xlMinimized
    Application.Calculation = xlCalculationManual
    Application.Visible = falsch
            
    „Einstellungsfortschrittsstab“
    Last frmProgress
    frmProgress.ProgressBar.Max = NFiles
    frmProgress.ProgressBar.Value = 0
    frmProgress.Show
    
    Für i = 1 zu NFiles
        sActiveFilename = sFilename (i)
        sFullPath = sFolder u. „\“ u. sActiveFilename
        
        „Import abgegrenzte Textdatei“
        Workbooks.OpenText Dateiname: =sFullPath, _
        Ursprung: =437, StartRow: =1, DataType: =xlDelimited, TextQualifier: = _
        xlDoubleQuote, ConsecutiveDelimiter: =False, Vorsprung: =True, Semikolon: =False, _
        Komma: =False, Raum: =False, anderes: =False, FieldInfo: =Array (1, 1), _
        TrailingMinusNumbers: =True
        
        „Den Blattnamen speichern und Format/addieren die erforderten Formeln“
        shSource = Application.ActiveSheet einstellen
        iRowCount = Application.WorksheetFunction.CountA (Spalten („A: “))
        shSource.Range (Zellen (1, 2), Zellen (iRowCount, 2)) .FormulaR1C1 = „=FIND ("": "", R [0] C [- 1])“
        shSource.Range (Zellen (1, 3), Zellen (iRowCount, 3)) .FormulaR1C1 = „=IF (GELASSEN (R [0] C [- 2], "" 7)= Anmerkung "", 61, WERT (MITTLER (R [0] C [- 2], 2, R [0] C [- 1] - 2)))“
        shSource.Range (Zellen (1, 4), Zellen (iRowCount, 4)) .FormulaR1C1 = „=RIGHT (R [0] C [- 3], LEN (R [0] C [- 3]) - R [0] C [- 2] - 1)“

        „Sicherstellen, dass die Zellen mit den gegenwärtigen Daten aktualisiert werden (nur benötigt, wenn Berechnung wird eingestellt auf Handbuch)“
        shSource.Calculate
        
        „Kopieren jetzt die resultierenden analysierten Daten in die korrekten Zellen auf dem Zielarbeitsblatt“
        Für J = 1 zum iRowCount
            iTargetColumn = CInt (shSource.Cells (J, 3).Value)
            rSourceRange = shSource.Cells (J, 4) einstellen
            shTarget.Cells (iBaseRow + i - 1, iBaseCol + iTargetColumn). Wert = rSourceRange.Value
        Folgendes J
        
        „Schließlich Abschluss die Quellarbeitsbuchakte, da wir werden beendet sie“
        Arbeitsbücher (sActiveFilename). Nahes SaveChanges: =False
        
        frmProgress.ProgressBar.Value = i
        frmProgress.Repaint
        
    Zunächst I
    
    shTarget.Columns („C: BK“) .EntireColumn.AutoFit
    
    frmProgress.Hide
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Application.ScreenUpdating = richten aus
    Application.WindowState = xlMaximized
    Application.Visible = richten aus
Enden-Unterseeboot
Weitere Lösungen  
 
programming4us programming4us