Удалить строку в текстовом файле после определенного ключевого слова - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть текстовый файл, например:

sample text1  
sample text2  
sample text3  

, и мне нужно, чтобы он был:

sample  
sample  
sample  

В основном мне нужно удалить всю строку после данной фразыв этом случае ключевое слово "sample"

Может кто-нибудь мне помочь?Я бы предпочел vbscript или что-то, что является stanalone, и я могу сделать пакет для этого

С уважением,

Ответы [ 4 ]

2 голосов
/ 17 февраля 2012

(Get-Content sample.txt) -replace '. * Sample (. +)', '$ 1' |Out-File sample.txt

0 голосов
/ 17 февраля 2012

С Just Vbscript вы можете добиться этого следующим образом

Option Explicit 
Dim oFSO, oTxtFile, sLine  ,filePath, cTxtFile
Const ForReading=1
Const ForWriting=2

filePath ="C:\Documents and Settings\Amol\Desktop\Converted\test.txt"
'' Filepath is your local path to txt file
Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oTxtFile = oFSO.OpenTextFile(filePath, 1) 
Set cTxtFile = oFSO.CreateTextFile(filePath & ".tmp")

Do Until oTxtFile.AtEndOfStream 

  sLine = oTxtFile.ReadLine
  If InStr(sLine,"sample") <> 0 Then
     sLine =  Left(sLine, InStr(sLine,"sample") -1 )&"sample" 
     cTxtFile.WriteLine(sLine)
  End if 

Loop 
oTxtFile.Close
cTxtFile.Close
oFSO.DeleteFile(filePath)
oFSO.MoveFile filePath&".tmp", filePath
0 голосов
/ 17 февраля 2012

Поскольку вы пометили свой вопрос в powershell, я дам вам решение в powershell:

$target='sample'
foreach ($line in gc .\foo.txt){$line.substring(0,$target.length)|out-file -append bar.txt}

Я предполагаю, что каждая строка начинается с "sample".

Если "образец текста в любом месте строки, это должно работать:

$target='sample'
foreach ($line in gc .\foo.txt){$line.substring(0,$line.indexof($target)+$target.length)|out-file -append bar.txt}
0 голосов
/ 17 февраля 2012

Это будет работать внутри файла .cmd или .bat:

for /f "tokens=1" %%i in ('type file1') do @echo %i >> file2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...