Pytanie : Parse autosys jil kartoteka using Unix narzędzie

0.Still the odpowiedź
http://www.experts-exchang e.com/Soft ware/Office_Productivity/Office_Suites/MS_Office/Q_26137365.html
Now I brać Czysty Unix lub właśnie Podejście,
I potrzeba podstawowy pivot wszystkie rząd w kolumna z tytuł gdy the szpaltowy imię być przed ": " przy narzędzie kreskowy
1.How móc I robić ono z Unix narzędzie: perl/sed/ksh/awk?
2.How móc I robić ono z Przodować macro?


The struktura Jil kartoteka być jak to:
/* ----------------- backupJIL ----------------- *

insert_job: backupJIL job_type: c
command: autorep - J/>MACHINE - q > /home/autosys/...p/autosys _jil_bk
machine: machine
owner: autosys@machine
permission: gx, ge, wx, we
date_conditions: 1
days_of_week: tu, my, th, fr, sa
start_times: "17: 00 "
description: "Dzienny wsparcie akcydensowy definicja "
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
rozkaz: /sysadm/xp/bin/mountprodbc .sh
maszyna: b_dexter
właściciel: autosys@/* ----------------- BC_mount ----------------- *

insert_job: BC_mount job_type: c
box_name: S. .fresh_box
rozkaz: /sysadm/xp/bin..odbc.sh
maszyna: machine
właściciel: autosys@machine
pozwolenie: gx, wx
warunek: sukces (Check_BC_Status)
opis: "Wspinać się the BCs na maszynowy "
std_out_file: >/var/tmp/mountprodbc.log
std_err_file: >/var/tmp/mountprodbc.err
alarm_if_fail: 1
 

Odpowiedź : Parse autosys jil kartoteka using Unix narzędzie

I robić jednakowy zadanie wewnątrz Przodować i ono wymagać the następujący podstawowy krok.

  • Dostawać the użytkownik wkład na dokąd the kartoteka lokalizować. 
  • Odzyskiwać pełny lista kartoteka który potrzebować przetwarzać. 
  • Dla kartoteka kartoteka: 
    • Otwierać the kartoteka jako rozgraniczać tekst kartoteka using Workbooks.OpenText (podstawowy wszystkie twój rząd wchodzić kolumna A 
    • Wkładać formuła w kolumna w the rozpieczętowany workbook (B, C i D w mój skrzynka) parse mój linia w the dane wymagać 
    • Kopiować the kartoteka dane w surowy dane stół w the zbiorczy workbook (jeden rząd na kartoteka oczywiście) 
    • Zamykać the surowy dane kartoteka gdy ono już nie potrzebować 
  • Następny kartoteka 

Podstawowy używać the władza Przodować podstawowy kartoteka, parse ono, then the rezultat w twój streszczenie prześcieradło the rząd w kolumna gdy ty w ten sposób. I także utrzymywać kolumna z the filename jako część the zbiorczy stół. I móc przykład ponieważ ono zawierać people ogłoszenie towarzyskie info ale the kod musieć ty pomysł.

(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:
Opcja Wyraźny

Jawny sFolder Sznurek
Jawny sFilename () Sznurek
Jawny NFiles Jako Integer

Okręt podwodny GetFileList ()
Ciemnawy varFileList Jako Wariant
Ćmić i Jako Integer

    "Dostawać the książka telefoniczna od the użytkownik"
    Z Application.FileDialog (msoFileDialogFolderPicker)
        . Przedstawienie
        Jeżeli .SelectedItems.Count = (0) Wtedy Wychodzić Okręt podwodny "użytkownik odwoływać"
        sFolder = .SelectedItems (1)
    Końcówka Z
    
    "Dostawać lista wszystkie the kartoteka w ten książka telefoniczna."
    "Zauważać że to być to… chociaż ono móc…"
    varFileList = GetFileNames (sFolder, "*.txt")
    
    Jeśli nie IsArray (varFileList) Wtedy
        MsgBox "Żadny kartoteka znajdować. ", vbInformation
        Wyjście Okręt podwodny
    Kończyć Jeżeli
    
    "Tworzyć the filename szyk opierać się na the wybrany książka telefoniczna"
    NFiles = UBound (varFileList) + (1)
    ReDim sFilename ((1) NFiles)
    
    "Kopiować the filenames w smyczkowy szyk dla use gdzie indziej"
    Dla i = (0) UBound (varFileList)
        sFilename (i + 1) = CStr (varFileList (i))
    Następnie i
    
    OutputFilenames2XL
    ImportFileContent
Końcówka Okręt podwodny


Intymny Funkcja GetFileNames (ByVal sPath Jako Sznurek, Fakultatywny sFilter Jako Sznurek) Jako Wariant
"   Wracać jednowymiarowy szyk z filenames"
"   Inaczej wracać Fałszywy"

Ciemnawy f Sznurek
Ćmić i Jako Integer
Ćmić FileList () Sznurek

    Jeżeli sFilter = "" Wtedy sFilter = "*.*"

    Wybierać Skrzynka Right$ (sPath, 1)
      Pakować "\", "/"
         sPath = Left$ (sPath, Len (sPath) - 1)
    Końcówka Wybiórka

    ReDim Prezerwa FileList ((0))

    f = Dir$ (sPath & "\" & sFilter)
    Robić Podczas Gdy Len (f) > (0)
        ReDim Prezerwa FileList (i) Sznurek
        FileList (i) = f
        i = i + (1)
        f = Dir$ ()
    Pętla
    
    Jeżeli FileList ((0)) <> Opróżniać Wtedy
        GetFileNames = FileList
    Inny
        GetFileNames = Fałszywy
    Kończyć Jeżeli    
Kończyć Funkcja


Intymny Okręt podwodny OutputFilenames2XL ()
Ciemnawy iBaseRow Jako Integer, iBaseCol Jako Integer
Ciemnawy shTarget Jako Worksheet
Ćmić i Jako Integer

    Ustawiać shTarget = Application.ActiveSheet
    iBaseRow = Pasmo ("BaseCell"). Rząd
    iBaseCol = Pasmo ("BaseCell"). Kolumna

    "Zaludniać the chodnikowiec pole
    shTarget.Range ("ImportDate"). Wartość = Teraz
    shTarget.Range ("FolderPath"). Wartość = sFolder
    shTarget.Range ("NFiles") = NFiles
    
    "Zaludniać filename kolumna the stołowy"
    Dla i = (1) NFiles
        shTarget.Cells (iBaseRow + i - (1), iBaseCol). Wartość = sFilename (i)
    Następnie i

    "Stawiać formuła parse transakcja id w pierwszy kolumna"
    shTarget.Range (Komórka (iBaseRow, iBaseCol - 1), Komórka (iBaseRow + NFiles - (1), iBaseCol - 1)) .FormulaR1C1 = "=MID (R [(0)] C [(1)], LEN (R [(0)] C [(1)]) - 14,8)"
Końcówka Okręt podwodny


Intymny Okręt podwodny ImportFileContent ()
Ćmić i Jako Integer, j Jako Integer
Ćmić shTarget Jako Worksheet
Ćmić iBaseRow Jako Integer, iBaseCol Jako Integer
Ćmić shSource Jako Worksheet
Ćmić sActiveFilename Sznurek
Ćmić sFullPath Sznurek
Ćmić iRowCount Jako Integer
Ćmić iTargetColumn Jako Integer
Ćmić rSourceRange Pasmo

    "Sklep podstawowy dane dla the cel worksheet my budować"
    Ustalony shTarget = Application.ActiveSheet
    iBaseRow = Pasmo ("BaseCell"). Rząd
    iBaseCol = Pasmo ("BaseCell"). Kolumna
    
    
    "Teraz proces teraz filename właśnie importować the worksheet"
    Application.ScreenUpdating = Fałszywy
    Application.WindowState = xlMinimized
    Application.Calculation = xlCalculationManual
    Application.Visible = Fałszywy
            
    "Ustawianie postęp bar"
    Obciążeniowy frmProgress
    frmProgress.ProgressBar.Max = NFiles
    frmProgress.ProgressBar.Value = (0)
    frmProgress.Show
    
    Dla i = (1) NFiles
        sActiveFilename = sFilename (i)
        sFullPath = sFolder & "\" & sActiveFilename
        
        "Import rozgraniczać tekst kartoteka"
        Workbooks.OpenText Filename: =sFullPath, _
        Początek: =437, StartRow: =1, DataType: =xlDelimited, TextQualifier: = _
        xlDoubleQuote, ConsecutiveDelimiter: =False, Zakładka: =True, Średnik: =False, _
        Przecinek: =False, Przestrzeń: =False, Inny: =False, FieldInfo: =Array ((1), 1), _
        TrailingMinusNumbers: =True
        
        "Przechować the szkotowy imię i format/dodawać formuła wymagać"
        Ustalony shSource = Application.ActiveSheet
        iRowCount = Application.WorksheetFunction.CountA (Kolumna ("A: "))
        shSource.Range (Komórka ((1), 2), Komórka (iRowCount, 2)) .FormulaR1C1 = "=FIND ("": "", R [(0)] C [- (1)])"
        shSource.Range (Komórka ((1), 3), Komórka (iRowCount, 3)) .FormulaR1C1 = "=IF (OPUSZCZAĆ (R [(0)] C [- 2], 7)= "" Komentarz "", 61, WARTOŚĆ (W POŁOWIE (R [(0)] C [- 2], 2, R [(0)] C [- (1)] - 2)))"
        shSource.Range (Komórka ((1), 4), Komórka (iRowCount, 4)) .FormulaR1C1 = "=RIGHT (R [(0)] C [- 3], LEN (R [(0)] C [- 3]) - R [(0)] C [- 2] - (1))"

        "Upewniać się the komórka aktualizować z the aktualny dane (tylko potrzebować jeżeli obliczenie ustawiać manuał)"
        shSource.Calculate
        
        "Teraz kopia the parsed dane w the poprawny komórka na the cel worksheet"
        Dla j = (1) IRowCount
            iTargetColumn = CInt (shSource.Cells (j, 3).Value)
            Ustalony rSourceRange = shSource.Cells (j, 4)
            shTarget.Cells (iBaseRow + i - (1), iBaseCol + iTargetColumn). Wartość = rSourceRange.Value
        Następny j
        
        "W końcu zakończenie the źródło workbook kartoteka ponieważ my kończyć z ono"
        Workbooks (sActiveFilename). Zamknięty SaveChanges: =False
        
        frmProgress.ProgressBar.Value = i
        frmProgress.Repaint
        
    Następnie i
    
    shTarget.Columns ("C: BK") .EntireColumn.AutoFit
    
    frmProgress.Hide
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Application.ScreenUpdating = Prawdziwy
    Application.WindowState = xlMaximized
    Application.Visible = Prawdziwy
Końcówka Okręt podwodny
Inne rozwiązania  
 
programming4us programming4us