我目前有一个输出日志文件有点混乱并且增长很快。它是权限邮箱的大型脚本的调试输出。我基本上只想删除文件中的每一行,直到它找到7天前的第一次迭代。
到目前为止,我可以返回包含该日期的所有行
elems = document.querySelectorAll('[data-select-gateway]');
for (var i = 0; i < elems.length; i++)
elems[i].style.display = 'none';
但我无法找到一个功能来擦除所有东西,直到第一次找到它。
我试过了一个-replace:
$content = Get-Content $file
$lastweek = "{0:M/d/yyyy}" -f (get-date).AddDays(-7)
$content | Where-Object { $_.Contains("$lastweek") }
但这似乎只是从包含指定字符串的每一行的开头替换。
答案 0 :(得分:3)
如果您正在运行V4,则可以使用数组.Where()
方法,并使用“SkipUntil
”选项:
$content.Where({ $_ -like "*$lastweek*" },'SkipUntil')
答案 1 :(得分:1)
如果您只想保留包含指定搜索字符串的条目,请执行以下操作:
$content = Get-Content $file | Where-Object {$_ -notcontains "$lastweek"}
$content | Set-Content $file -force
如果需要,请将-notcontains "$lastweek"
替换为-notlike "*$lastweek*"
,以便更好地进行匹配。