Question : Analyser le dossier de jil d'autosys using des outils d'Unix

0.Still essayant d'obtenir la réponse au href= " http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html " du
le ware/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html
Now du e.com/Soft de http://www.experts-exchang je prends Unix pur ou EXCELLE juste l'approche, le besoin du
I de pivoter fondamentalement toutes les rangées en colonnes avec des titres quand le nom de colonne est avant « :  » à chaque ligne le
1.How peux je la fais avec des outils d'Unix : Perl/sed/ksh/awk ? le
2.How peut je la font avec le macro d'Excel ? la structure du


The du dossier de Jil est comme ceci :
/* ----------------- backupJIL ----------------- *

insert_job : job_type de backupJIL :
command de c : autorep - J TOUT - q > _jil_bk
machine de /home/autosys/...p/autosys : machine
owner : autosys@machine
permission : gx, GE, wx, we
date_conditions : 1
days_of_week : le TU, nous, Th, franc, sa
start_times :
description de « 17h00 " : « Support quotidien
std_out_file de travail de définitions " : t
std_err_file de /tmp/autosys_jil_backup.ou : r
alarm_if_fail de /tmp/autosys_jil_backup.er : 1
/* ----------------- BC_mount ----------------- * insert_job du

: Job_type de BC_mount : box_name du
de c : Commande de SAN_test_refresh_box
: machine du .sh
de /sysadm/xp/bin/mountprodbc : propriétaire du b_dexter
: autosys@/* ----------------- BC_mount ----------------- * insert_job du

: Job_type de BC_mount : box_name du
de c : Commande de S.fresh_box
: machine du
de /sysadm/xp/bin..odbc.sh : propriétaire du machine
: permission de l'autosys@machine
: gx, état du wx
: description du
de succès (Check_BC_Status) : « Monter le BCs le
sur machine " std_out_file : >/var/tmp/mountprodbc.log
std_err_file : alarm_if_fail de >/var/tmp/mountprodbc.err
: 1
 

class= de

Réponse : Analyser le dossier de jil d'autosys using des outils d'Unix

J'ai fait une tâche semblable dans Excel et il a impliqué les étapes de base suivantes.

  • Obliger les utilisateurs à entrer sur où les dossiers sont localisés. 
  • Rechercher une pleine liste de dossiers qui doivent être traités. 
  • Pour chaque dossier : 
    • Ouvrir le dossier comme dossier délimité des textes using Workbooks.OpenText (fondamentalement toutes vos rangées héritent la colonne A 
    • Insérer les formules en colonnes dans le cahier de travail ouvert (B, C et D dans mon cas) pour analyser chaque ligne dans les données requises 
    • Copier les données analysées dans une table de données brutes dans le cahier de travail récapitulatif (une rangée par dossier évidemment) 
    • Fermer le dossier de données brutes comme il n'est nécessaire plus 
  • Prochain dossier 

Employer fondamentalement la puissance d'Excel d'ouvrir chaque dossier, l'analyser, puis copier les résultats dans votre feuille récapitulative transformant les rangées en colonnes comme le faites cela vous. J'ai également gardé une colonne avec le nom de fichier d'origine en tant qu'élément du tableau synoptique. Je ne peux pas attacher un exemple puisqu'il contient l'information personnelle des personnes mais le code devrait te donner une idée.

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 :
Option explicite

sFolder public comme corde
sFilename public () comme corde
NFiles public comme nombre entier

GetFileList secondaire ()
Faible varFileList comme variante
Obscurcir I comme nombre entier

    « Obtenir l'annuaire de l'utilisateur »
    Avec Application.FileDialog (msoFileDialogFolderPicker)
        . Exposition
        Si .SelectedItems.Count = 0 sortent alors le sous-marin « utilisateur décommandé »
        sFolder = .SelectedItems (1)
    Extrémité avec
    
    « Obtenir une liste de tous les dossiers dans cet annuaire. »
    « Noter que ce n'est pas récursif… bien qu'il pourrait être… »
    varFileList = GetFileNames (sFolder, « *.txt »)
    
    Sinon IsArray (varFileList) puis
        MsgBox « aucuns dossiers trouvés.  », vbInformation
        Sortir le sous-marin
    Finir si
    
    « Installer la rangée de nom de fichier basée sur l'annuaire choisi »
    NFiles = UBound (varFileList) + 1
    sFilename de ReDim (1 à NFiles)
    
    « Copier les noms de fichier dans une rangée de corde pour l'usage ailleurs »
    Pour I = 0 à UBound (varFileList)
        sFilename (I + 1) = CStr (varFileList (i))
    Après i
    
    OutputFilenames2XL
    ImportFileContent
Sous-marin d'extrémité


Fonction privée GetFileNames (sPath de ByVal comme corde, sFilter facultatif comme corde) comme variante
«    Renvoie une rangée unidimensionnelle avec des noms de fichier »
«    Renvoie autrement faux »

Faible f comme corde
Obscurcir I comme nombre entier
Obscurcir FileList () comme corde

    Si sFilter = sFilter de "" puis = « *.* »

    Choisir le cas Right$ (sPath, 1)
      Enfermer « \ », « / »
         sPath = Left$ (sPath, Len (sPath) - 1)
    Extrémité choisie

    Conserve FileList (0) de ReDim

    f = Dir$ (sPath et « \ » et sFilter)
    Faire tandis que Len (f) > 0
        Conserve FileList de ReDim (i) comme corde
        FileList (i) = f
        i = I + 1
        f = Dir$ ()
    Boucle
    
    Si FileList (0) <> vident alors
        GetFileNames = FileList
    Autrement
        GetFileNames = faux
    Finir si    
Finir la fonction


Sous-marin privé OutputFilenames2XL ()
Faible iBaseRow comme nombre entier, iBaseCol comme nombre entier
Faible shTarget comme feuille de travail
Obscurcir I comme nombre entier

    Placer le shTarget = l'Application.ActiveSheet
    iBaseRow = gamme (« BaseCell »). Rangée
    iBaseCol = gamme (« BaseCell »). Colonne

    « Peupler les champs d'en-tête »
    shTarget.Range (« ImportDate »). Valeur = maintenant
    shTarget.Range (« FolderPath »). Valeur = sFolder
    shTarget.Range (« NFiles ») = NFiles
    
    « Peupler la colonne de nom de fichier de la table »
    Pour I = 1 à NFiles
        shTarget.Cells (iBaseRow + I - 1, iBaseCol). Valeur = sFilename (i)
    Après i

    « Mettre la formule pour analyser l'Id de transaction en la première colonne »
    shTarget.Range (cellules (iBaseRow, iBaseCol - 1), cellules (iBaseRow + NFiles - 1, iBaseCol - 1)) .FormulaR1C1 = « =MID (R [0] C [1], LEN (R [0] C [1]) - 14.8) »
Sous-marin d'extrémité


ImportFileContent secondaire privé ()
Obscurcir I comme nombre entier, j comme nombre entier
Obscurcir le shTarget comme feuille de travail
Obscurcir l'iBaseRow comme nombre entier, iBaseCol comme nombre entier
Obscurcir le shSource comme feuille de travail
Obscurcir le sActiveFilename comme corde
Obscurcir le sFullPath comme corde
Obscurcir l'iRowCount comme nombre entier
Obscurcir l'iTargetColumn comme nombre entier
Obscurcir le rSourceRange comme gamme

    « Données basses de magasin pour la feuille de travail de cible que nous construisons »
    Placer le shTarget = l'Application.ActiveSheet
    iBaseRow = gamme (« BaseCell »). Rangée
    iBaseCol = gamme (« BaseCell »). Colonne
    
    
    « Traiter maintenant chaque nom de fichier juste importé vers la feuille de travail »
    Application.ScreenUpdating = faux
    Application.WindowState = xlMinimized
    Application.Calculation = xlCalculationManual
    Application.Visible = faux
            
    « Barre de progrès d'installation »
    frmProgress de charge
    frmProgress.ProgressBar.Max = NFiles
    frmProgress.ProgressBar.Value = 0
    frmProgress.Show
    
    Pour I = 1 à NFiles
        sActiveFilename = sFilename (i)
        sFullPath = sFolder et « \ » et sActiveFilename
        
        « Dossier délimité par importation des textes »
        Nom de fichier de Workbooks.OpenText : =sFullPath, _
        Origine : =437, StartRow : =1, DataType : =xlDelimited, TextQualifier : = _
        xlDoubleQuote, ConsecutiveDelimiter : =False, étiquette : =True, point-virgule : =False, _
        Virgule : =False, l'espace : =False, autre : =False, FieldInfo : =Array (1, 1), _
        TrailingMinusNumbers : =True
        
        « Stocker le nom de feuille et le format/ajoutent des formules exigées »
        Placer le shSource = l'Application.ActiveSheet
        iRowCount = Application.WorksheetFunction.CountA (colonnes (« A :  »))
        shSource.Range (cellules (1, 2), cellules (iRowCount, 2)) .FormulaR1C1 = « =FIND ("" : "", R [0] C [- 1]) »
        shSource.Range (cellules (1, 3), cellules (iRowCount, 3)) .FormulaR1C1 = « =IF (LAISSÉ (R [0] C [- 2], "" de commentaire de "" 7)=, 61, VALEUR (MI (R [0] C [- 2], 2, R [0] C [- 1] - 2))) »
        shSource.Range (cellules (1, 4), cellules (iRowCount, 4)) .FormulaR1C1 = « =RIGHT (R [0] C [- 3], LEN (R [0] C [- 3]) - R [0] C [- 2] - 1) »

        « S'assurer que les cellules sont mises à jour avec les données courantes (seulement requises si le calcul est placé au manuel) »
        shSource.Calculate
        
        « Copient maintenant les données analysées en résultant dans les cellules correctes sur la feuille de travail de cible »
        Pour j = 1 à l'iRowCount
            iTargetColumn = CInt (shSource.Cells (j, 3).Value)
            Placer le rSourceRange = le shSource.Cells (j, 4)
            shTarget.Cells (iBaseRow + I - 1, iBaseCol + iTargetColumn). Valeur = rSourceRange.Value
        Prochain j
        
        « Enfin fin le dossier de cahier de travail de source puisque nous sommes finis avec lui »
        Cahiers de travail (sActiveFilename). SaveChanges étroit : =False
        
        frmProgress.ProgressBar.Value = I
        frmProgress.Repaint
        
    Après i
    
    shTarget.Columns (« C : BK ») .EntireColumn.AutoFit
    
    frmProgress.Hide
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Application.ScreenUpdating = rectifient
    Application.WindowState = xlMaximized
    Application.Visible = rectifient
Sous-marin d'extrémité
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us