PDA

Показать полную графическую версию : Поиск в одном текстовом файле с заменой в другом


cortes_
21-09-2013, 13:30
Привет всем!
Передо мной встала следующая задача. Есть текстовый файл (исходный):
Hostname=srv1.corp.contoso.com
IPAddress= 10.1.1.1
Active=True

Есть текстовый второй файл (назначение):
Server=server
IPAddress= 10.1.1.1
Hostname=server.server
Active=True

Необходимо полностью скопировать строку,содержащую Hostname из первого файла, с заменой строки Hostname во втором файле. Т.е. на выходе во втором файле вместо изначального Hostname, появится строка из первого файла. Строки не обязательно будут в том порядке как в примере, могут быть и перемешаны.
Я честно пытался реализовать скрипт через регулярные выражения, но не вышло.
Текст скрипта:


Dim objFSO
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set wshshell = CreateObject("wscript.shell")
workDir = wshshell.ExpandEnvironmentStrings(WshShell.CurrentDirectory)
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = False
objRegEx.IgnoreCase = True
objRegEx.Pattern = "Hostname=[A-Za-z0-9-]+"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileSrc = objFSO.OpenTextFile(workDir & "\source.txt", 1)
srcString = objFileSrc.ReadLine ' Тут неправильно, читается только первая строка,а не идет поиск по всему файлу
objFileSrc.Close

Set objFileDes = objFSO.OpenTextFile(workDir & "\destination.txt", 2)
strSearchString = "Hostname="
strNewString = objRegEx.Replace(strSearchString,srcString)
objFileDes.WriteLine strNewString
objFileDes.Close


На всякий случай в приложении тестовые файлы и сам скрипт.

Foreigner
21-09-2013, 13:58
Исходя из конкретных файлов. Батник:

@echo off
1>dest.tmp (

findstr /i "hostname" src.txt
findstr /i /v "hostname" dest.txt

)
move dest.tmp dest.txt

PowerShell:

(gc dest.txt) -replace 'hostname=.*',(sls 'hostname' src.txt).line | sc dest.txt




© OSzone.net 2001-2012