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

PowerShell中如何获取文件中指定内容的行号?

解决提取包含特定内容的行号问题

看起来你在尝试用PowerShell提取things.txt里包含"Mustard"的行号,但之前的代码没达到预期,我来帮你梳理一下问题所在,再给出正确的解法。

为什么你的代码返回空值?

你用了Select-String的-context 0,1参数,这个参数的作用是获取匹配行的上下文内容(这里是匹配行之后的1行),而不是获取行号。之后你访问$linenumber.context,如果匹配行是文件的最后一行,context.PostContext(后面的行)就会是空的,所以整个context看起来没有内容——但这根本不是你要的行号信息呀。

正确提取行号的方法

Select-String返回的MatchInfo对象本身就带有LineNumber属性,直接提取这个属性就可以得到行号:

方法1:只输出行号

$search = "Mustard"
Get-Content things.txt | Select-String $search | ForEach-Object { $_.LineNumber }

运行这段代码后,会输出所有包含"Mustard"的行的行号(比如你的例子里应该是2和4)。

方法2:同时输出行号和对应行内容

如果需要同时看到行号和匹配的内容,可以用Select-Object来筛选相关属性:

$search = "Mustard"
Get-Content things.txt | Select-String $search | Select-Object LineNumber, Line

额外说明

如果你的things.txt其实是所有单词在同一行(而不是每行一个单词),那Select-String会把整个内容当作第1行,这时候行号只会返回1。如果是这种情况,你可能需要的是单词在该行中的位置,而不是行号——不过从你的描述来看,应该是每行一个单词的多行文件,上面的方法完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:47:06