Добавить пробел в конец определенной строки

Я хочу написать vbscript или пакетный файл для запуска почти сотни файлов (в одном каталоге) и сделать следующее:

Для каждой строки, начинающейся со строки "component " (после компонента есть пробел), я хочу добавить в конце этой строки пробел. Другие линии не будут затронуты.

Например:

this is line one
component this is line two
this is line three

изменится на:

this is line one
component this is line two (<=space)
this is line three

(После слова "два" только один пробел.)


person terminetorx    schedule 27.11.2012    source источник
comment
что ты уже испробовал? Вы используете FileScriptingObject для чтения каждой строки? Если это так, InStr должен легко найти компонент, а затем записать файл обратно с пробелом в конце строки. Можете ли вы опубликовать свой код, чтобы мы могли его посмотреть?   -  person Andrew    schedule 27.11.2012
comment
@ Эндрю Scripting.FileSystemObject это то, что вы имели в виду, я полагаю.   -  person mgr326639    schedule 01.12.2012


Ответы (2)


В VBScript вы можете сделать это с помощью регулярного выражения:

in  = "input.txt"
out = "output.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

text = fso.OpenTextFile(in).ReadAll
text = Replace(text, vbCrLf, vbLf)         ' remove CR b/c it interferes with
                                           ' multiline matches

Set re = New RegExp
re.Pattern   = "^(component .*)$"
re.MultiLine = True
re.Global    = True

text = re.Replace(text, "$1 ")
text = Replace(text, vbLf, vbCrLf)         ' restore CRLF

fso.OpenTextFile(out, 2, True).Write(text)

fso.DeleteFile in
fso.MoveFile out, in
person Ansgar Wiechers    schedule 27.11.2012

person    schedule
comment
работает нормально только без пробела в команде DELIMS (delims=) - person terminetorx; 28.11.2012
comment
@terminetorx Не беспокойтесь, я пропустил немного разделителей, рад, что это работает :) - person Bali C; 28.11.2012