首页 > 解决方案 > 外壳 | 在特定模式后从 .txt 中删除行

问题描述

InputObject   : created_at : Tue Sep 24 02:31:26 +0000 2020
SideIndicator : =>

InputObject   : text       : CH#66551 by @Test: Testing this script to see if it works
SideIndicator : =>

InputObject   : created_at : Tue Sep 24 00:27:01 +0000 2020
SideIndicator : =>

InputObject   : text       : CH#34330 by Test: Fixed every thing that is able to breathe
SideIndicator : =>

InputObject   : created_at : Tue Sep 22 02:31:26 +0000 2020

InputObject   : text       : CH#66551 by @User2: Fixing stuff

InputObject   : created_at : Tue Sep 22 00:27:01 +0000 2020

InputObject   : text       : CH#34330 by User1: Seeing if it works

InputObject   : created_at : Mon Sep 21 15:54:20 +0000 2020

InputObject   : text       : CH#34294 by User1: Trying to find a workaround

InputObject   : created_at : Mon Sep 21 15:29:13 +0000 2020

InputObject   : text       : CH#34291 by User3: Doing something else

InputObject   : created_at : Mon Sep 21 15:03:15 +0000 2020

InputObject   : text       : CH#34286 by User3: Running around

InputObject   : 

InputObject   : 

我想删除此 .txt 文件中最后一个“SideIndicator : =>”之后的所有内容, 非常感谢您的帮助,因为我是 PowerShell 新手。

标签: powershellsortingdesign-patterns

解决方案


您可以简单地执行以下操作:

(Get-Content file.txt -Raw | Select-String -pattern '(?s).*SideIndicator : =>').Matches.Value |
    Set-Content newfile.txt

解释:

Using-Raw允许将文件作为单个字符串读入。这使单线模式(?s)能够有效地工作。单行模式允许.匹配换行符,这使得跨多行匹配批量字符变得容易。

由于Select-String返回MatchInfo对象,访问Valueproperty 的Matches属性只返回匹配的文本。


推荐阅读