Cuestión : Analizar el archivo del jil de los autosys usar las herramientas de Unix

0.Still que intenta conseguir la respuesta al href= " http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html " del
el ware/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html
Now del e.com/Soft de http://www.experts-exchang estoy tomando Unix puro o apenas el acercamiento de EXCEL, necesidad del
I de girar básicamente todas las filas en columnas con títulos cuando el nombre de columna está antes “: ” en cada línea
1.How puedo la hago con las herramientas de Unix: ¿Perl/sed/ksh/awk? ¿el
2.How puede yo la hace con la macro de Excel? la estructura del


The del archivo de Jil es como esto:
/* ----------------- backupJIL ----------------- *

insert_job: job_type del backupJIL:
command de c: autorep - J TODO - q > _jil_bk
machine de /home/autosys/...p/autosys: machine
owner: autosys@machine
permission: gx, GE, wx, we
date_conditions: 1
days_of_week: tu, nosotros, th, franco, sa
start_times: “17: 00 "
description: “Respaldo diario
std_out_file de las definiciones de trabajo ": 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 del

: Job_type de BC_mount: box_name del
de c: Comando de SAN_test_refresh_box
: máquina del .sh
de /sysadm/xp/bin/mountprodbc: dueño del b_dexter
: autosys@/* ----------------- BC_mount ----------------- * insert_job del

: Job_type de BC_mount: box_name del
de c: Comando de S.fresh_box
: máquina del
de /sysadm/xp/bin..odbc.sh: dueño del machine
: permiso del autosys@machine
: gx, condición del wx
: descripción del
del éxito (Check_BC_Status): “Montar el BCs en el
de la máquina " std_out_file: >/var/tmp/mountprodbc.log
std_err_file: alarm_if_fail de >/var/tmp/mountprodbc.err
: 1
 

class= del

Respuesta : Analizar el archivo del jil de los autosys usar las herramientas de Unix

He hecho una tarea similar en Excel e implicó los pasos básicos siguientes.

  • Conseguir a usuarios entrar en donde se localizan los archivos. 
  • Recuperar una lista completa de archivos que necesiten ser procesados. 
  • Para cada archivo: 
    • Abrir el archivo como archivo de texto delimitado usar Workbooks.OpenText (todas sus filas entran en básicamente la columna A 
    • Insertar las fórmulas en columnas en el libro de trabajo abierto (B, C y D en mi caso) para analizar cada línea en los datos requeridos 
    • Copiar los datos analizados en una tabla de las informaciones en bruto en el libro de trabajo sumario (una fila por archivo obviamente) 
    • Cerrar el archivo de las informaciones en bruto como se necesita no más 
  • Archivo siguiente 

Utilizar básicamente la energía de Excel de abrir cada archivo, analizarla, después copiar los resultados en su hoja sumaria que transforma las filas en columnas como usted lo hace tan. También guardé una columna con el nombre de fichero que originaba como parte de la tabla sumaria. No puedo atar un ejemplo puesto que contiene el Info personal de la gente pero el código debe darle una idea.

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:
Opción explícita

sFolder público como secuencia
sFilename público () como secuencia
NFiles público como número entero

GetFileList secundario ()
varFileList dévil como variante
Amortiguar i como número entero

    “Conseguir el directorio del usuario”
    Con Application.FileDialog (msoFileDialogFolderPicker)
        . Demostración
        Si .SelectedItems.Count = 0 entonces salen el submarino “usuario cancelado”
        sFolder = .SelectedItems (1)
    Extremo con
    
    “Conseguir una lista de todos los archivos en este directorio.”
    “Observar que esto no es recurrente… aunque podría ser…”
    varFileList = GetFileNames (sFolder, “*.txt”)
    
    Si no IsArray (varFileList) entonces
        MsgBox “ningunos archivos encontrados. ”, vbInformation
        Salir el submarino
    Terminar si
    
    “Fijar el arsenal del nombre de fichero basado en el directorio seleccionado”
    NFiles = UBound (varFileList) + 1
    sFilename de ReDim (1 a NFiles)
    
    “Copiar los nombres de fichero en un arsenal de la secuencia para el uso a otra parte”
    Para i = 0 a UBound (varFileList)
        sFilename (i + 1) = CStr (varFileList (i))
    Después i
    
    OutputFilenames2XL
    ImportFileContent
Submarino del extremo


Función privada GetFileNames (sPath de ByVal como secuencia, sFilter opcional como secuencia) como variante
“   Vuelve un arsenal unidimensional con nombres de fichero”
“   Vuelve de otra manera falso”

F dévil como secuencia
Amortiguar i como número entero
Amortiguar FileList () como secuencia

    Si sFilter = sFilter del "" entonces = “*.*”

    Seleccionar el caso Right$ (sPath, 1)
      Encajonar “\”, “/”
         sPath = Left$ (sPath, Len (sPath) - 1)
    Extremo selecto

    Coto FileList (0) de ReDim

    f = Dir$ (sPath y “\” y sFilter)
    Hacer mientras que Len (f) > 0
        Coto FileList (i) de ReDim como secuencia
        FileList (i) = f
        i = i + 1
        f = Dir$ ()
    Lazo
    
    Si FileList (0) <> entonces vacia
        GetFileNames = FileList
    
        GetFileNames = falso
    Terminar si    
Terminar la función


Submarino privado OutputFilenames2XL ()
iBaseRow dévil como número entero, iBaseCol como número entero
shTarget dévil como hoja de trabajo
Amortiguar i como número entero

    Fijar el shTarget = Application.ActiveSheet
    iBaseRow = gama (“BaseCell”). Fila
    iBaseCol = gama (“BaseCell”). Columna

    “Poblar los campos de jefe”
    shTarget.Range (“ImportDate”). Valor = ahora
    shTarget.Range (“FolderPath”). Valor = sFolder
    shTarget.Range (“NFiles”) = NFiles
    
    “Poblar la columna del nombre de fichero de la tabla”
    Para i = 1 a NFiles
        shTarget.Cells (iBaseRow + i - 1, iBaseCol). Valor = sFilename (i)
    Después i

    “Poner la fórmula para analizar la identificación de transacción en la primera columna”
    shTarget.Range (células (iBaseRow, iBaseCol - 1), células (iBaseRow + NFiles - 1, iBaseCol - 1)) .FormulaR1C1 = “=MID (R [0] C [1], LEN (R [0] C [1]) - 14.8)”
Submarino del extremo


ImportFileContent secundario privado ()
Amortiguar i como número entero, j como número entero
Amortiguar el shTarget como hoja de trabajo
Amortiguar el iBaseRow como número entero, iBaseCol como número entero
Amortiguar el shSource como hoja de trabajo
Amortiguar el sActiveFilename como secuencia
Amortiguar el sFullPath como secuencia
Amortiguar el iRowCount como número entero
Amortiguar el iTargetColumn como número entero
Amortiguar el rSourceRange como gama

    “Datos bajos del almacén para la hoja de trabajo de la blanco que estamos construyendo”
    Fijar el shTarget = Application.ActiveSheet
    iBaseRow = gama (“BaseCell”). Fila
    iBaseCol = gama (“BaseCell”). Columna
    
    
    “Ahora procesar cada nombre de fichero apenas importado a la hoja de trabajo”
    Application.ScreenUpdating = falso
    Application.WindowState = xlMinimized
    Application.Calculation = xlCalculationManual
    Application.Visible = falso
            
    “Barra del progreso de la disposición”
    frmProgress de la carga
    frmProgress.ProgressBar.Max = NFiles
    frmProgress.ProgressBar.Value = 0
    frmProgress.Show
    
    Para i = 1 a NFiles
        sActiveFilename = sFilename (i)
        sFullPath = sFolder y “\” y sActiveFilename
        
        “Archivo de texto delimitado importación”
        Nombre de fichero de Workbooks.OpenText: =sFullPath, _
        Origen: =437, StartRow: =1, DataType: =xlDelimited, TextQualifier: = _
        xlDoubleQuote, ConsecutiveDelimiter: =False, lengüeta: =True, punto y coma: =False, _
        Coma: =False, espacio: =False, otro: =False, FieldInfo: =Array (1, 1), _
        TrailingMinusNumbers: =True
        
        “Almacenar el nombre de la hoja y el formato/agrega las fórmulas requeridas”
        Fijar el shSource = Application.ActiveSheet
        iRowCount = Application.WorksheetFunction.CountA (columnas (“A: ”))
        shSource.Range (células (1, 2), células (iRowCount, 2)) .FormulaR1C1 = “=FIND ("": "", R [0] C [- 1])”
        shSource.Range (células (1, 3), células (iRowCount, 3)) .FormulaR1C1 = “=IF (DEJADO (R [0] C [- 2], "" del comentario del "" 7)=, 61, VALOR (MEDIADOS DE (R [0] C [- 2], 2, R [0] C [- 1] - 2)))”
        shSource.Range (células (1, 4), células (iRowCount, 4)) .FormulaR1C1 = “=RIGHT (R [0] C [- 3], LEN (R [0] C [- 3]) - R [0] C [- 2] - 1)”

        “Cerciorarse de que las células estén puestas al día con los datos actuales (necesarios solamente si el cálculo se fija al manual)”
        shSource.Calculate
        
        “Ahora copian los datos analizados resultantes en las células correctas en la hoja de trabajo de la blanco”
        Para j = 1 al iRowCount
            iTargetColumn = CInt (shSource.Cells (j, 3).Value)
            Fijar el rSourceRange = shSource.Cells (j, 4)
            shTarget.Cells (iBaseRow + i - 1, iBaseCol + iTargetColumn). Valor = rSourceRange.Value
        J siguiente
        
        “Finalmente cierre el archivo del libro de trabajo de la fuente puesto que nos acaban con él”
        Libros de trabajo (sActiveFilename). SaveChanges cercano: =False
        
        frmProgress.ProgressBar.Value = i
        frmProgress.Repaint
        
    Después i
    
    shTarget.Columns (“C: BK”) .EntireColumn.AutoFit
    
    frmProgress.Hide
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Application.ScreenUpdating = verdad
    Application.WindowState = xlMaximized
    Application.Visible = verdad
Submarino del extremo
Otras soluciones  
 
programming4us programming4us