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

如何用PowerShell按指定行号提取文本文件中的药物名称

PowerShell提取固定位置行的药物名称

针对你需要从重复文本区块的固定位置提取药物名称的需求,这里提供两种直接的PowerShell实现方案:

方案一:按指定行号提取

如果已知目标行的具体编号(比如6、17、28行),可以直接筛选对应行:

# 读取文件内容
$fileContent = Get-Content -Path "input.txt"
# 定义目标行号(PowerShell中行索引从1开始)
$targetLineNumbers = 6, 17, 28
# 转换为0-based索引后筛选,输出到新文件
$fileContent | Select-Object -Index ($targetLineNumbers | ForEach-Object { $_ - 1 }) | Out-File -Path "output.txt"

如果目标行是按固定步长重复(比如每11行出现一次),可以自动生成行号数组,避免手动列举:

$fileContent = Get-Content -Path "input.txt"
$totalLines = $fileContent.Count
# 生成从6开始,步长11的行号数组,直到文件末尾
$targetLineNumbers = for ($i = 6; $i -le $totalLines; $i += 11) { $i }
$fileContent | Select-Object -Index ($targetLineNumbers | ForEach-Object { $_ - 1 }) | Out-File -Path "output.txt"

方案二:按区块分割提取

如果每个重复区块的行数固定(比如每个区块11行,药物名称在区块内第6行),可以按区块批量处理:

# 按每11行分割成区块,提取每个区块的第6行(0-based索引为5)
Get-Content -Path "input.txt" -ReadCount 11 | ForEach-Object {
    # 确保区块行数足够,避免索引越界
    if ($_.Count -ge 6) { $_[5].Trim() }
} | Out-File -Path "output.txt"

可选优化:过滤无效内容

如果需要确保提取的是至少包含两个字母的单词,可以添加过滤步骤:

Get-Content -Path "input.txt" -ReadCount 11 | ForEach-Object {
    if ($_.Count -ge 6) { $_[5].Trim() }
} | Where-Object { $_ -match '^[a-zA-Z]{2,}$' } # 只保留符合要求的内容
| Out-File -Path "output.txt"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:22:45