windows - 从文件中删除与模式匹配的所有行,除了第一次出现
问题描述
我有一个如下所示的 .txt 文件目录:
[LINETYPE]S[STARTTIME]00:00:00 [LINETYPE]P[开始时间]00:00:00 [LINETYPE]B[开始时间]00:59:00 [LINETYPE]C[开始时间]00:59:00 [LINETYPE]C[开始时间]00:59:30 [LINETYPE]S[STARTTIME]01:00:00 [LINETYPE]P[开始时间]01:00:00 [LINETYPE]B[开始时间]01:59:00 [LINETYPE]C[开始时间]01:59:00 [LINETYPE]C[开始时间]01:59:30 [LINETYPE]S[STARTTIME]02:00:00
我想删除[LINETYPE]S
除第一个之外的所有出现,它恰好总是 00:00:00 并且在第一行,然后将文件重新保存到新位置。
也就是说,必须始终存在,但需要删除以[LINETYPE]S[STARTTIME]00:00:00
开头的其他行。[LINETYPE]S
这就是我想出的,除了删除所有[LINETYPE]S
行,包括第一行之外,它的工作原理。谷歌搜索了一段时间后,我似乎无法弄清楚如何做那部分,所以我希望有人能指出我正确的方向。谢谢你的帮助!
Get-ChildItem "C:\Users\Me\Desktop\Samples" -Filter *.txt | ForEach-Object {
Get-Content $_.FullName | Where-Object {
$_ -notmatch "\[LINETYPE\]S"
} | Set-Content ('C:\Users\Me\Desktop\Samples\Final\' + $_.BaseName + '.txt')
}
解决方案
我不知道如何通过管道 [ blush ] 做到这一点,所以我进行了foreach
循环和复合测试。
# fake reading in a text file
# in real life, use Get-Content
$InStuff = @'
[LINETYPE]S[STARTTIME]00:00:00
[LINETYPE]P[STARTTIME]00:00:00
[LINETYPE]B[STARTTIME]00:59:00
[LINETYPE]C[STARTTIME]00:59:00
[LINETYPE]C[STARTTIME]00:59:30
[LINETYPE]S[STARTTIME]01:00:00
[LINETYPE]P[STARTTIME]01:00:00
[LINETYPE]B[STARTTIME]01:59:00
[LINETYPE]C[STARTTIME]01:59:00
[LINETYPE]C[STARTTIME]01:59:30
[LINETYPE]S[STARTTIME]02:00:00
'@ -split [System.Environment]::NewLine
$KeepFirst = '[LINETYPE]S'
$FoundFirst = $False
$FilteredList = foreach ($IS_Item in $InStuff)
{
if ($IS_Item.StartsWith($KeepFirst))
{
if (-not $FoundFirst)
{
$IS_Item
$FoundFirst = $True
}
}
else
{
$IS_Item
}
}
$FilteredList
输出 ...
[LINETYPE]S[STARTTIME]00:00:00
[LINETYPE]P[STARTTIME]00:00:00
[LINETYPE]B[STARTTIME]00:59:00
[LINETYPE]C[STARTTIME]00:59:00
[LINETYPE]C[STARTTIME]00:59:30
[LINETYPE]P[STARTTIME]01:00:00
[LINETYPE]B[STARTTIME]01:59:00
[LINETYPE]C[STARTTIME]01:59:00
[LINETYPE]C[STARTTIME]01:59:30
此时,您可以将新集合发送到文件中。[咧嘴笑]
推荐阅读
- angular - 从 MatGridTile 类扩展,组件的行为不像 mat-grid-tile
- c# - 如何从具有特定属性的 xml 元素中获取值?
- azure - 具有 AAD 身份验证的 ASP.NET Core Web API 模板 - 哪里有使它工作的教程?
- typescript - 将接口的对象转换为其基本接口
- python-3.x - 如何解决python中定义Synset的错误
- java - 使用 Morphia 从 Mongo 获取文档时将值设置为非 DB 属性
- javascript - Visual Studio 中的构建后 Vue 应用程序给出“命令 npm run build exited with code 1”
- javascript - 如何切换按钮以将标题更改为不同的颜色并返回原始颜色
- javascript - 集合组查询的替代方案
- static - 什么是构建具有本地化功能的静态网站的最佳平台