1

Если у меня есть текстовый файл, я могу отсортировать его командой sort input.txt output.txt . Можно ли как-то также удалить дубликаты строк из текстового файла? (В идеале я хотел бы получить решение, которое можно сделать в командном файле под Windows.)

Это в основном то же самое, что спрашивать, как удалить дубликаты из текстового файла. (Поскольку, очевидно, я могу сначала отсортировать, а затем использовать пакет для удаления дубликатов.) Причина, по которой я также упомянул сортировку, состоит в том, что я предполагаю, что дубликаты легче удалить, если мы знаем, что файл отсортирован, и они могут появляться только в последовательных строках. Поэтому я думаю, что более вероятно, что есть некоторый способ удаления дубликатов вместе с сортировкой. (И для целей, в которых я хочу использовать этот идентификатор, не имеет значения, изменяется ли порядок строк в файле, если удалены повторяющиеся строки.)

Например, из файла, который выглядит так:

100
100
100
100
101
101
102

Я хотел бы получить

100
101
102

1 ответ1

3

Пакетно отсортировать файл с удалением дубликатов строки?

Ниже приведен пакетный скрипт для 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

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .