powershell - 如果文本文件中包含字符串,则删除该行,然后删除接下来的两行
问题描述
我尝试使用 powershell 2 删除一行文本和接下来的 0 到 5 行,但这删除了我脚本中的所有内容。
我正在构建一个 PowerShell 脚本来解析 LMtools 输出。我有一条线可以取出任何未使用的东西
$body = (($body -split "`n") |
Where-Object {$_ -notmatch 'Total of 0 licenses in use'}) -join "`n"
我不需要查看正在使用的软件包,因为以下两个许可证准确显示了正在使用的内容。
我需要删除带有 Users of Package: 的行以及以下两行。
所以这:
软件包用户:Autodesk AutoCAD:(已颁发 1 个许可证;总共 1 个许可证在使用中) “包:Autodesk AutoCAD”v1.000,供应商:adskflex,到期:永久(无到期日期) UserH ybw-w7-15021 ybw-w7-15021 (v1.000) (licenseserver/27000 490),开始星期一 2/25 10:38 软件包用户:AutoCAD - 包括专用工具集:(已颁发 1 个许可证;总共 1 个许可证在使用中) “包:AutoCAD - 包括专用工具集”v1.000,供应商:adskflex,到期:2020 年 2 月 15 日 UserA DC18007-W10 DC18007-W10 (v1.000) (licenseserver/27000 114),开始星期一 2/25 10:50 Autodesk AutoCAD 2017 用户:(共颁发 4 个许可证;总共使用 1 个许可证) “Autodesk AutoCAD 2017”v1.000,供应商:adskflex,有效期:2020 年 2 月 15 日 UserA DC18007-W10 DC18007-W10 (v1.0) (licenseserver/27000 214),开始星期一 2/25 10:50 Autodesk AutoCAD 2015 用户:(共颁发 4 个许可证;总共使用 1 个许可证) “Autodesk AutoCAD 2015”v1.000,供应商:adskflex,到期:永久(无到期日期) UserH DCw7-15021 DCw7-15021 (v1.0) (licenseserver/27000 390),开始星期一 2/25 10:38
就变成了这样:
Autodesk AutoCAD 2017 用户:(共颁发 4 个许可证;总共使用 1 个许可证) “Autodesk AutoCAD 2017”v1.000,供应商:adskflex,有效期:2020 年 2 月 15 日 UserA DC18007-W10 DC18007-W10 (v1.0) (licenseserver/27000 214),开始星期一 2/25 10:50 Autodesk AutoCAD 2015 用户:(共颁发 4 个许可证;总共使用 1 个许可证) “Autodesk AutoCAD 2015”v1.000,供应商:adskflex,到期:永久(无到期日期) UserH DCw7-15021 DCw7-15021 (v1.0) (licenseserver/27000 390),开始星期一 2/25 10:38
解决方案
您可以逐行读取输入,然后跳过匹配“包用户:”的行和接下来的两行。但是,由于您的整个输入文件似乎由 3 行组组成,因此我可能会使用Select-String
否定的前瞻断言。
$pattern = '^Users of (?!Package:)'
Get-Content 'input.txt' | Select-String $pattern -Context 0,2 | ForEach-Object {
$_.Line
$_.Context.PostContext
} | Set-Content 'output.txt'
该模式匹配行首 ( ) 处的字符串“Users of”,^
但后面没有字符串“Package:”。
使用-Context 0,2
包括匹配的后续两个输入行。
推荐阅读
- amazon-web-services - 如何用其他 ec2 实例图像替换 ec2 图像?
- node.js - 未处理的拒绝 MongoError: '$inc' 中的美元 ($) 前缀字段 '$inc' 对存储无效
- java - 当我使用千分尺的 PrometheusMeterRegistry 时,指标没有出现在普罗米修斯端点
- swift - 如何在运行时将 CIFilters 添加到视频中
- java - 如何在android中上传到服务器之前调整和压缩文件(pdf,xls,doc,pptx,.....等)base64
- php - 使用 XAMPP 和 Windows 一次又一次地收到错误“无法对套接字执行操作...”
- mysql - 从 Sequelize 中的两个不同的连接(包括)获取“总和”
- python-3.x - RabbitMQ Pika 连接重置 , (-1, ConnectionResetError(104, 'Connection reset by peer'))
- bots - 如何从 botpress 中的快速回复中获取有效负载
- hyperledger-fabric - Hyperledger Fabric 数据机密性