如何使用Powershell基于图片ID去除TXT文件中的重复行
PowerShell按指定字段对TXT文件行去重方案
实现思路
- 直接逐行读取原始TXT文件,不需要转CSV格式
- 按
/拆分每行内容,取第一个斜杠后的第二个元素作为图片ID - 用哈希表记录已经出现过的ID,遇到未记录的ID就保留当前行,重复ID直接跳过
- 最终将所有保留的行输出到新文件
可用代码
# 替换为你的原始文件路径 $inputFile = "C:\path\to\your\original.txt" # 替换为你要保存的去重后文件路径 $outputFile = "C:\path\to\your\output.txt" # 用于记录已出现ID的哈希表 $existedId = @{} Get-Content -Path $inputFile | ForEach-Object { $splitArr = $_ -split '/' # 校验行格式合法再处理 if ($splitArr.Length -ge 2) { $currentId = $splitArr[1] if (-not $existedId.ContainsKey($currentId)) { # 首次出现的ID,输出该行并标记ID已存在 $_ $existedId[$currentId] = $true } } } | Set-Content -Path $outputFile -Encoding UTF8
说明
- 你之前直接用
Unique参数没有生效,是因为该参数默认是对整行内容做去重判断,仅会删除完全相同的行,无法针对你指定的ID字段做去重。 - 上述脚本默认保留每个ID首次出现的行,符合你「保留任意一行」的要求。如果需要保留最后出现的行,可以先遍历所有行把ID和对应行存入哈希表,最后再输出所有哈希表的值即可。
- 如果你的原始文件不是UTF8编码,可以把
Set-Content后的-Encoding UTF8修改为-Encoding Default适配系统默认编码,避免输出乱码。
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

