テキスト行は次のようになります。
12341234567 2635473234 123456789 sfhwruewtbdsvmhsgfiergn
(これは行の1つです)
12341234567 2635473234 xxxxxxxxx sfhwruewtbdsvmhsgfiergn
(Xのみをスペースに置き換えたい)、それぞれの場所の他のテキストはそのままです。
このファイルはログ ファイルで、場合によっては最大 500 行になります。
テキスト行は次のようになります。
12341234567 2635473234 123456789 sfhwruewtbdsvmhsgfiergn
(これは行の1つです)
12341234567 2635473234 xxxxxxxxx sfhwruewtbdsvmhsgfiergn
(Xのみをスペースに置き換えたい)、それぞれの場所の他のテキストはそのままです。
このファイルはログ ファイルで、場合によっては最大 500 行になります。
編集: WriteLine で () を削除します
お願いします
入力および出力ファイルのパスをフルパスに変更します
リファレンス: VBScript を使用したファイルの読み取りと書き込み
Dim objFSO
dim objFile
dim thisLine
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\Users\wangCL\Desktop\data.txt")
If objFile.Size > 0 Then 'make sure the input file is not empty
Set inputFile = objFSO.OpenTextFile("C:\Users\wangCL\Desktop\data.txt", 1) 'Replace the filename here
set outputFile = objFSO.CreateTextFile("C:\Users\wangCL\Desktop\output.txt", TRUE) 'replace it with output filename
do while not inputFile.AtEndOfStream
thisLine = inputFile.ReadLine ' Read an entire line into a string.
newLine = mid(thisLine,1,23) & " " & mid(thisLine,33)
outputFile.WriteLine newLine
loop
inputFile.Close
outputFile.Close
end if
あなたが削除を求めたので(スペースで置き換えないでください)、私は提案します:
Const csInF = "..\data\13930436.txt"
Const csOutF = "..\data\13930436-c.txt"
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim sAll : sAll = oFS.OpenTextFile(csInF).ReadAll()
WScript.Echo sAll
Dim reR : Set reR = New RegExp
reR.Global = True
reR.Multiline = True
reR.Pattern = "^(.{23})(.{10})"
WScript.Echo reR.Pattern
oFS.CreateTextFile(csOutF, True).Write reR.Replace(sAll, "$1")
WScript.Echo oFS.OpenTextFile(csOutF).ReadAll()
出力:
============================================================
12341234567 2635473234 123456789 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 XxxxxxxxX sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 ......... sfhwruewtbdsvmhsgfiergn
^(.{23})(.{10})
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
============================================================
本番環境で「すべてを読み取り、RegExp を使用して置換し、書き戻す」という戦略を使用するには、FileSystemObject および RegExp に関する VBScript ドキュメントを検討する必要があります。
更新(仕様変更後):
使用する
oFS.CreateTextFile(csOutF, True).Write reR.Replace(sAll, "$1" & Space(10))
取得するため:
...
12341234567 2635473234 ......... sfhwruewtbdsvmhsgfiergn
^(.{23})(.{10})
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
...
Update II (仕様変更後: ザップ番号のみ):
正規表現パターンを次から変更します
reR.Pattern = "^(.{23})(.{10})" ' look for 10 arbitrary characters (.)
に
reR.Pattern = "^(.{23})(\d{9} )" ' look for 9 digits (\d) plus 1 space
出力:
12341234567 2635473234 123456789 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 XxxxxxxxX sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 987654321 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 abcdefghi sfhwruewtbdsvmhsgfiergn
^(.{23})(\d{9} )
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 XxxxxxxxX sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 abcdefghi sfhwruewtbdsvmhsgfiergn
パターン内の変な文字については、RegExp Syntaxを参照してください。