Удалить все после ключевого слова
Я пытаюсь объединить файлы с Compare-Object
и я получил файл, как это:
Number=5
Example=4
Track=1000
Date=07/08/2018 19:51:16
MatCaissierePDAAssoc=
NomImpPDAAssoc=
TpeForceLectPan=0
Number=1
Example=1
Track=0
Date=01/01/1999
Вы можете видеть, что это повторяется с номером =1. За исключением другого значения. Я хотел бы удалить все (все означает не только "= 1") после моего ключевого слова "Number" и самого ключевого слова.
Это то, что я сделал до сих пор:
$files = Get-ChildItem "D:\all"
foreach ($file in $files) {
$name = dir $file.FullName | select -ExpandProperty Name
Compare-Object -ReferenceObject (Get-Content D:\original\test.ini) -DifferenceObject (Get-Content $file.FullName) -PassThru |
Out-File ('D:\output\' + $name)
}
И я хотел бы удалить все строки с "Track" и "Date".
Мой результат должен выглядеть так:
Number=5
Example=4
MatCaissierePDAAssoc=
NomImpPDAAssoc=
TpeForceLectPan=0
На самом деле мне нужно что-то, чтобы удалить двойные ключи в моем файле.
1 ответ
Решение
Это может помочь:
# read existing file
$fileContent = Get-Content C:\tmp\so01.txt
# iterate over lines
foreach($line in $fileContent) {
# filter lines beginning with 'Track' or 'Number'
if((-not $line.StartsWith('Track')) -and (-not $line.StartsWith('Number'))) {
# output lines to new file
$line | Add-Content C:\tmp\so02.txt
}
}
Содержание C:\tmp\so02.txt
:
Example=4
Date=07/08/2018 19:51:16
MatCaissierePDAAssoc=
NomImpPDAAssoc=
TpeForceLectPan=0
Example=1
Date=01/01/1999