You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中如何对sls的Line对象执行-replace替换后按Line排序

PowerShell 检索VHD文件procedure定义并按过程名排序方案

问题原因

直接通过sls(Select-String别名)匹配到的procedure行自带前置缩进空白、procedure关键字前缀,未清理字段直接排序会将空白、关键字纳入排序权重,无法得到按纯过程名排序的结果。

完整实现命令

Get-ChildItem -Recurse -Filter *.vhd |
  Select-String -Pattern '^\s*procedure\s' |
  Where-Object { $_.Line -notmatch 'end' } |
  ForEach-Object {
    $_.Line = $_.Line -replace "^\s+procedure\s*", ""
    $_
  } |
  Sort-Object Line |
  Select-Object Line, FileName

逻辑说明

  • 递归遍历当前目录下所有后缀为.vhd的文件
  • 通过Select-String匹配所有行首带任意缩进、包含procedure关键字的行
  • 过滤带end的procedure结束行,排除无效匹配内容
  • 遍历匹配结果时,执行正则替换清除行首空白、procedure关键字及紧随其后的空白字符,仅保留干净的过程名内容
  • 基于清理后的Line字段执行排序,即可得到按过程名字典序排列的结果,最终输出过程名、所属文件名两个字段

内容的提问来源于stack exchange,提问作者pico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 16:18:20