Получение уникальных строк из каждого файла TXT в каталоге Windows Сервер ЛУЧШИЙ МЕТОД? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть каталог с тысячами текстовых файлов, каждый файл содержит тысячи строк. Некоторые файлы содержат уникальные записи, некоторые содержат дубликаты и т. Д. Каков наилучший способ записи одного файла, содержащего только уникальные строки, из каждого файла txt в указанном DIR. Для ясности я хочу прочитать каждую строку в каждом текстовом файле в каталоге и написать один файл, содержащий уникальные строки.

Ps Сервер работает Windows Сервер

mytext1. txt

Apple orange Banana eggs
Apple orange Banana eggs
Apple dolphins leeks potatos

mytext2.txt

Apple orange Banana eggs
Apple orange Banana eggs
Apple dolphins leeks potatos

mytext3.txt

Apple orange Banana eggs
Apple orange Banana eggs
Apple dolphins leeks potatos
Glasses Dolphins oranges pears

anothertext.1

pink headphones glasses oranges
Apple orange toast security

anothertext.2

pink headphones glasses oranges
Apple orange toast security

anothertext.3

laundry goat elephant mars

И я хотел бы, чтобы конечный текстовый результат выглядел следующим образом

results.txt

Apple orange Banana eggs
Apple dolphins leeks potatos
Glasses Dolphins oranges pears
pink headphones glasses oranges
Apple orange toast security
laundry goat elephant mars

Я не хочу, чтобы результаты "сортировались" по сути. Я хочу команду, которая выглядит как

gc C:\Uploads\*.txt |  > C:\Clean\Clean.txt

Очевидно, что приведенная выше команда не будет работать, результирующий текстовый файл будет содержать несколько дубликатов. Еще раз спасибо.

Я думал сначала создать объединенный файл, а затем уникально все содержимое, т. Е.

get-content C:\Uploads\*.txt | out-file C:\Clean\output.txt
get-content C:\Clean\output.txt | get-unique > C:\Clean\outputclean.txt

"outputclean.txt" по некоторым причинам содержит повторяющиеся строки.

РЕШЕНО В случае, если кто-нибудь столкнется с этим в будущем, Это записывает объединенный мастер-файл из всех текстовых файлов в C: \ Uploads * .txt и записывает его в C: \ Clean \ output.txt затем он создает ha sh и использует -eq на конвейере, все в powershell, этот метод следует использовать, если порядок важен, как я хотел, поэтому все записи останутся в порядке и не будут отсортированы.

get-content C:\Uploads\*.txt | out-file C:\Clean\output.txt

$hash = @{}
gc C:\Clean\output.txt | % {if ($hash.$_ -eq $null) {$_};$hash.$_ = 1} > C:\Clean\Clean.txt
...