Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Аватара пользователя
Uragan66

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Uragan66 »

greg zakharov, извините, думал, что скрипт нужно запускать как js.

Теперь разобрался... Большая благодарность за скрипт!
Аватара пользователя
Uragan66

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Uragan66 »

Цитата Uragan66:



так не пойдёт для нескольких файлов
Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки




оформите весь код в функцию и считывайте файлы по одному с вызовом функции...



Код:

Код: Выделить всё

function set-outfile {
    process{
        $file = 'out_'+$_.name
        @(for($i, $arr = 0, (gc $_.fullname -Encoding utf8); $i -lt $arr.Length;) {
           $a, $b = $arr[$i], $arr[$i + 1] # потенциальная пара
           # критерий относительно которого формируется пара
           if ($a.StartsWith('#EXTINF') -and $b -match ':\/\/') {
              # выводим пару в окно хоста
              "$a`n$b"
              # переходим на две позиции вперед
              $i += 2
           } else {
              # в противном случае переходим к следующему значению
              ++$i
              continue
           }
       }) | Sort-Object -Unique | Out-File $file -Encoding utf8
    }
}
dir .\каталог\* -inc *.m3u -file|set-outfile
Аватара пользователя
Uragan66

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Uragan66 »

Здравствуйте!

Использую, подсказанный ув. greg zakharov, скрипт:



Код:

Код: Выделить всё

@(for($i, $arr = 0, (gc .\*.m3u -Encoding utf8); $i -lt $arr.Length;) {
   $a, $b = $arr[$i], $arr[$i + 1] # потенциальная пара
   # критерий относительно которого формируется пара
   if ($a.StartsWith('#EXTINF') -and $b -match ':\/\/') {
      # выводим пару в окно хоста
      "$a`n$b"
      # переходим на две позиции вперед
      $i += 2
   }
   else {
      # в противном случае переходим к следующему значению
      ++$i
      continue
   }
}) | Sort-Object -Unique | Out-File .\out.m3u -Encoding utf8

Скрипт работает отлично, ещё раз большое спасибо!

Но бывает возникает необходимость пускать на вход не один файл, а несколько.

Подскажите, пожалуйста, можно ли для обработки скриптом прописать не один файл, а папку с файлами одного расширения ?

Буду премного благодарен за ответы и подсказки.
Аватара пользователя
DJ Mogarych

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение DJ Mogarych »

Привет!Что то пошло не так,помогите пожалуйста понять,на скриншоте во вложении все видно.
Аватара пользователя
YuS_2

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение YuS_2 »

Alex2010god, у вас старая версия PowerShell, скрипт использует новые возможности. Обновите PoSh до 5.1
Аватара пользователя
Alex2010god

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Alex2010god »

Цитата Alex2010god:



никаких изменений
Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки




Напротив. Теперь совсем другая ошибка.



В том каталоге, откуда Вы пытаетесь исполнять код (на Вашем скриншоте это каталог профиля текущего пользователя), отсутствует каталог с именем «каталог».
Вложения

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
Busla

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Busla »

Alex2010god, у вас старая версия PowerShell, скрипт использует новые возможности. Обновите PoSh до 5.1
Аватара пользователя
Alex2010god

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Alex2010god »

Цитата Alex2010god:



ничего не понял из Вашего ответа(что нужно сделать что бы каталог появился?)...
Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки




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




Цитата Alex2010god:



Как вернуть русский язык для PowerShell 5.1?
Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки




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

[Расширение jpg было запрещено, вложение больше недоступно.]

Аватара пользователя
Iska

Re: Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки

Сообщение Iska »

В начале скрипта указан адрес:

$aContent = Get-Content -Path 'D:\1\FILMOTEKA.M.C+\F.m3u'

просто вписать вместо .\каталог

так .\D:\1\FILMOTEKA.M.C+\F.m3u

или еще как ни будь?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»