2015-08-05 1 views
0

Я хочу найти все имена пользователей в текстовом файле ниже, используя VBScript. Мы получаем такой файл ежедневно с разными именами пользователей. В каждом текстовом файле может быть более одного имени пользователя. Я хочу, чтобы извлечь эти имена пользователей в следующем формате:Извлечь имена пользователей из текстового файла

sutedan/chavaji/samdave 

data.txt:

application;account;entitlement;owner;action;reason;request_no;creation_date;review_name;sent_to;entitlement_description 
36475-5;sutedan;gmrsk_TC_BIZ_CRE|gmrsk_TC_BIZ_EM|revoke account;Off-boarding;2d71c99-1688-4d09-b132-9029bf681084< ;29.07.2015 21:44:47;revoke account; 
"For the New business line CRE ""|Emerging Markets Client business profile""|Emerging Markets Prop business profile""|Global Equity Derivatives Client business profile"" 
|Global Equity Derivatives Prop business profile""|Fixed Income Client business profile""|Global Credit Trading Client business profile""|Prime Brokerage business profile""| 
PPSN Client business profile""|Global Rates Client business profile""|Global Rates Deutsche Securities Inc. business profile""|Global Rates Prop business profile"" 
|RMBS Client business profile""|RMBS Prop business profile""|Valuations Services Group business""|Tradecapture: Region: Frankfurt""|TradeCapture rights for the Sydney Region 
""|Read only profile for GT support staff wishing to view trades only for a particular business/region combination in order to remediate systemic or specific trade problems" 
application;account;entitlement;owner;action;reason;request_no;creation_date;review_name;sent_to;entitlement_description 
36475-5;chavaji;gmrsk_TC_BIZ_CRE|gmrsk_TC_BIZ_EM|revoke account;Off-boarding;2d71c99-1688-4d09-b132-9010bf681084< ;29.07.2015 21:44:47;revoke account; 
"For the New business line CRE ""|Emerging Markets Client business profile""|Emerging Markets Prop business profile""|Global Equity Derivatives Client business profile"" 
|Global Equity Derivatives Prop business profile""|Fixed Income Client business profile""|Global Credit Trading Client business profile""|Prime Brokerage business profile""| 
PPSN Client business profile""|Global Rates Client business profile""|Global Rates Deutsche Securities Inc. business profile""|Global Rates Prop business profile"" 
|RMBS Client business profile""|RMBS Prop business profile""|Valuations Services Group business""|Tradecapture: Region: Frankfurt""|TradeCapture rights for the Sydney Region 
""|Read only profile for GT support staff wishing to view trades only for a particular business/region combination in order to remediate systemic or specific trade problems" 
application;account;entitlement;owner;action;reason;request_no;creation_date;review_name;sent_to;entitlement_description 
36475-2;samdave;gmrsk_TC_BIZ_CRE|gmrsk_TC_BIZ_EM|revoke account;Off-boarding;2d71c99-1688-4d09-b132-9029bf691084< ;29.07.2015 21:44:47;revoke account; 
"For the New business line CRE ""|Emerging Markets Client business profile""|Emerging Markets Prop business profile""|Global Equity Derivatives Client business profile"" 
|Global Equity Derivatives Prop business profile""|Fixed Income Client business profile""|Global Credit Trading Client business profile""|Prime Brokerage business profile""| 
PPSN Client business profile""|Global Rates Client business profile""|Global Rates Deutsche Securities Inc. business profile""|Global Rates Prop business profile"" 
|RMBS Client business profile""|RMBS Prop business profile""|Valuations Services Group business""|Tradecapture: Region: Frankfurt""|TradeCapture rights for the Sydney Region 
""|Read only profile for GT support staff wishing to view trades only for a particular business/region combination in order to remediate systemic or specific trade problems" 

ответ

0

Это, казалось, сработало для меня. Мой код предполагает, что имя пользователя входит в одно и то же место для каждого нового раздела информации. Я использую полевую учетную запись в качестве отправной точки для ссылки на нее. Он работает с данными образца как минимум.

Option Explicit 

Dim fso, fOpenFile, fReadFile, data, x, userList, dataLineStart 
Set fso = CreateObject("Scripting.FileSystemObject") 

Set fOpenFile = fso.OpenTextFile("C:\My\Drive\Path\Data.txt") 
fReadFile = fOpenFile.ReadAll 
fOpenFile.close 
Set fOpenFile = Nothing 

data = Split(fReadFile, ";") 
userList = "" 
dataLineStart = 0 

for each x in data 
    if x = "account" then dataLineStart = 1 
    if dataLineStart = 11 then userList = userList & x & "/" 
    dataLineStart = dataLineStart + 1 
next 

userList = left(userList, len(userList)- 3) 
Wscript.Echo(userList) 
+0

Не работает. Почему вы использовали **. Не могли бы вы объяснить? – Ajinkya

+0

Но нет символа ** при запуске и окончании имени пользователя – Ajinkya

+0

Ну как-то, когда я скопировал ваш текстовый файл, я получил эту строку символов **. Я скоро изменю свой код в редакции. – legendjr

1

Будут ли имена пользователей всегда должны предшествовать ряд #####-# стиля? Если это так, вы, вероятно, можете просто совместить поле после того, как этот шаблон произойдет. Он не будет соответствовать GUID, который был найден позже, так как единственный возможный шаблон #####-# в GUID не будет сопровождаться точкой с запятой.

' Using the file path from your comment... 
With CreateObject("Scripting.FileSystemObject") 
    strText = .OpenTextFile("C:\Users\chavaji\Documents\Data.txt").ReadAll 
End With 

With New RegExp 
    .Pattern = "\d{5}-\d;([^;]+);" 
    .Global = True 
    Set mc = .Execute(strText) 
End With 

ReDim a(mc.Count - 1) 
For i = 0 To mc.Count - 1 
    a(i) = mc(i).SubMatches(0) 
Next 

WScript.Echo Join(a, "/") 

Более подробную информацию вы можете предоставить по шаблону, тем лучше. Например, если следующее поле всегда начинается gmrsk, это может значительно улучшить это регулярное выражение.

+1

Set FSO = CreateObject ("Scripting.FileSystemObject") Set strText = fso.OpenTextFil ("C: \ Users \ chavaji \ Documents \ data.txt", 1) печать strText.ReadAll С Новый RegExp .Pattern = "\ d {5} - \ d; ([^;] +);" .global = True Set тс = .Execute (strText) End With ReDim а (mc.Count - 1) Для я = 0 Для mc.Count - 1 а (I) = MC (I). SubMatches (0) Next WScript.Echo Join (a, "/") получение несоответствия типа ошибки: 'Execute' set mc = .Execute (strText) – Ajinkya

+0

Существует два разных идентификатора 36475-2; 36475-5; оттуда начинаются имена пользователей. – Ajinkya

+0

Любой может помочь в этом – Ajinkya