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

PowerShell去除TXT中同JPG前缀重复行方法求助

解决PowerShell中按JPG基础路径去重URL行的问题

普通的去重方法(比如Select-Object -Unique)确实没法处理这种参数不同但指向同一个JPG的情况——它们会把整个URL当成判断重复的依据。这里给你两种实用的解决方案,根据你的需求选就行:

方案1:保留每个JPG对应的第一行

这个脚本会遍历所有URL,只保留每个JPG基础路径第一次出现的那一行:

# 替换成你的输入文件路径
$inputFilePath = "C:\your\input.txt"
# 替换成你的输出文件路径
$outputFilePath = "C:\your\output.txt"

# 用哈希表记录已经处理过的JPG路径
$processedJpgPaths = @{}

# 逐行读取并处理
Get-Content -Path $inputFilePath | ForEach-Object {
    # 提取问号前的JPG基础路径(不管有没有参数都能正常工作)
    $baseJpgPath = $_ -split '\?' | Select-Object -First 1
    
    # 如果这个路径还没被处理过,就写入输出文件并标记为已处理
    if (-not $processedJpgPaths.ContainsKey($baseJpgPath)) {
        $_ | Add-Content -Path $outputFilePath
        $processedJpgPaths[$baseJpgPath] = $true
    }
}

方案2:保留每个JPG对应的最后一行

如果你想保留每个JPG最后一次出现的那一行,可以用分组的方式处理:

$inputFilePath = "C:\your\input.txt"
$outputFilePath = "C:\your\output.txt"

# 按JPG基础路径分组,然后取每组的最后一行写入输出
Get-Content -Path $inputFilePath | 
    Group-Object -Property { $_ -split '\?' | Select-Object -First 1 } |
    ForEach-Object {
        $_.Group[-1] | Add-Content -Path $outputFilePath
    }

关键说明

  • 两种方案都会自动处理没有参数的URL(比如直接是https://mysite.local/9999/9999_01_00.jpg的情况),因为-split '\?'之后只会得到原字符串,不影响判断。
  • 哈希表的方式性能更好,适合处理大文件;分组的方式代码更简洁,逻辑直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:27:41