Powershell处理TXT文件:删除指定行后内容、筛选区间行实现方法
PowerShell 操作TXT文件解决方案
问题1:保留关键词所在行及之前的所有内容,删除后续行
你之前的命令逻辑错误:-notmatch参数的作用是排除匹配到关键词的行,自然会删掉第63行,不符合需求。
正确实现代码:
# 第一步:获取关键词第一次出现的行号 $targetLineNum = Select-String -Path .\example.txt -Pattern "myword" | Select-Object -First 1 -ExpandProperty LineNumber # 第二步:读取文件前N行(N为上述行号)输出到新文件 Get-Content .\example.txt -TotalCount $targetLineNum | Out-File .\new_example.txt -Encoding UTF8
说明:Get-Content的-TotalCount参数会直接读取指定行数的内容,不需要遍历整个文件,执行效率更高。如果要直接修改原文件,确认内容无误后可以将输出路径改为原文件路径即可(建议操作前先备份原文件)。
问题2:筛选保留行首数字在11~56区间的行
根据你的示例,筛选规则为忽略行内容的后缀字符,仅提取行首的数字部分,判断数值是否在11到56的闭区间内,符合条件则保留。
正确实现代码:
Get-Content .\source.txt | ForEach-Object { # 匹配行首的连续数字 if ($_ -match '^(\d+)') { $lineNum = [int]$matches[1] # 判断数字是否在指定区间内 if ($lineNum -ge 11 -and $lineNum -le 56) { $_ } } } | Out-File .\filtered.txt -Encoding UTF8
测试该代码对你提供的示例文件执行后,会自动过滤掉10a、123a两行,输出结果和预期完全一致。
内容的提问来源于stack exchange,提问作者Harpalyke
相关产品推荐
相关产品推荐

