如果我有一个文本文件,我可以按命令对其进行排序sort input.txt output.txt
。我也可以以某种方式从文本文件中删除重复的行吗?(理想情况下,我希望有一个可以在 Windows 下的批处理文件中完成的解决方案。)
这基本上与询问如何从文本文件中删除重复项相同。(因为显然我可以先排序,然后使用批处理删除重复项。)我之所以提到排序,是因为我认为如果我们知道文件已排序并且它们只能出现在连续的行上,则删除重复项会更容易。所以我想更有可能有某种方法可以与排序一起删除重复项。(并且对于我想要使用此 id 的目的,只要删除重复的行,文件中行的顺序是否更改并不重要。)
例如从如下所示的文件:
100
100
100
100
101
101
102
我想得到
100
101
102
答案1
批量对文件进行排序并删除重复的行?
下面是一个批处理脚本本机 Windows 解决方案,正如您要求的那样,它将完成此任务;只需相应地设置您的输入和输出文件变量即可。
附加说明: 如果您进行SET InputFile=%~1
这样的更改,那么您可以将文件拖到已保存的批处理脚本上,它将使用简单的拖放方法完成任务。
批处理脚本
@ECHO ON
SET InputFile=C:\folder\path\Input.txt
::SET InputFile=%~1
SET OutputFile=C:\folder\path\Output.txt
SET PSScript=%Temp%\~tmpRemoveDupe.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Get-Content "%InputFile%" ^| Sort-Object ^| Get-Unique ^> "%OutputFile%">>"%PSScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
GOTO EOF