当前位置:  开发笔记 > 编程语言 > 正文

PowerShell-删除文本文件的所有行,直到找到特定字符串

如何解决《PowerShell-删除文本文件的所有行,直到找到特定字符串》经验,为你挑选了1个好方法。

我目前有一个输出日志文件,有点混乱,并且增长很快。它是具有邮箱权限的大型脚本的调试输出。我基本上只想删除文件中的每一行,直到找到7天前的日期的第一次迭代为止。

到目前为止,我可以返回包含该日期的所有行

$content = Get-Content $file
$lastweek = "{0:M/d/yyyy}" -f (get-date).AddDays(-7)

$content | Where-Object { $_.Contains("$lastweek") }

但是我无法找出一个功能来擦除所有内容,直到第一次找到它为止。

我尝试了-replace:

$content -replace ".*$lastweek", " " | Set-Content $file -Force

但这似乎只能从包含指定字符串的每一行的开头替换。



1> mjolinor..:

如果您正在运行V4,则可以使用.Where()带有' SkipUntil'选项的array 方法:

$content.Where({ $_ -like "*$lastweek*" },'SkipUntil')

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有