Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 10.02.2021
Сообщений: 3

Сортировать текстовые файлы

10.02.2021, 13:17. Показов 3957. Ответов 29

Студворк — интернет-сервис помощи студентам
Здраствуйте)
Дано папка с текстовыми файлами,
нужно по 5 строке осуществить поиск значения и если совпало переместить текстовый файл в соответсвующую папку. Знания и опыт грузчика((( и немного со школы борланд паскаля


пока нашел две логики

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

PowerShell
1
2
3
4
5
6
7
$match = "500 "  
Select-String -Path C:\00000\*.txt -Pattern $match | Select-Object -Property filename | Set-Content fn.txt 
gc fn.txt | sort | get-unique > unique.txt
Get-Content Unique.txt | foreach-object {$_ -replace "^.*?(GG.*)",'$1'} | Set-Content out.txt
Get-Content out.txt | ForEach-Object {$_ -replace 't\}', 't' } | Set-Content out2.txt
$it=Get-Content out2.txt
Move-Item $it -Destination "C:\x5\"
2. присваиваю переменной путь, присваиваю переменной содержимое файла по пути (что бы можно было взять на сравнение только нужную строку) "захватить имя файла" не получилось.. после команды селектстринг тоже захвата имени файла не происходит((( , все знаний не хватило как теперь этот файл переместить, вроде поиск по нужной строке есть, но при совпадении повершелл просто выдает мне в консоли строку и все.
PowerShell
1
2
3
$fn= "C:\000\*.txt" 
$of= Get-Content $fn | Select-Object -Property filename
select-String -inputObject $of[4] -pattern "300" | Set-Content fn.txt
как Захватить имя файла что бы можно было записать его для дальнейшего перемещения. А если возможно просто сразу при совпадении переместить файл вообще было б хорошо)
почему повершелл? нет проблем с типами данных,открытием закрытием файлов...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2021, 13:17
Ответы с готовыми решениями:

Текстовые файлы и замена в нем заданных значений
Добрый день Есть вопрос как можно заменить в файле определенные значения на заданные В директории есть файлы с расширением HL1 в этих...

Создать пакетный файл, который будет сортировать файлы по размеру
Парни помогите, нужно создать пакетный файл который будет сортировать из поточного каталога файлы по следующему алгоритму. - файлы...

Вставить имена файлов в текстовые файлы
Задача - обработать все текстовые файлы в папке. Для каждого файла вставить в него первой строкой его имя с расширением и текстом указанным...

29
 Аватар для alhaos
1934 / 549 / 155
Регистрация: 20.02.2019
Сообщений: 2,675
Записей в блоге: 77
11.02.2021, 15:03
Студворк — интернет-сервис помощи студентам
YuS_2, Лучше сдохнуть в стремлении к совершенству, чем сойти с ума доказывая всем, что оно недостижимо.
0
1659 / 274 / 66
Регистрация: 03.06.2020
Сообщений: 707
11.02.2021, 16:53
Цитата Сообщение от volodin661 Посмотреть сообщение
"A".."Z" |3,4| { $_ }
Это конечно не пайп, но тоже вариант:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$enum = '[flags()] enum Test {'
 
$n = 1
$str =
foreach ($s in ("a".."z"))
{
    "${s} = ${n}"
    $n *= 2
}
 
$enum += $($str -join ';') + '}'
Invoke-Expression $enum
 
# Это можно вычислить в цикле, но как пример...
 
[Test] 7
[Test] 120
[Test] 896
[Test] 15360
[Test] 114688
[Test] 1966080
[Test] 14680064
[Test] 50331648
Попутный вопрос. Можно ли сформировать enum динамически, сгенерировать его штатными методами, а не через Invoke-Expression?
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,022
11.02.2021, 17:59
Ваще-то я недорассказал ))


в качестве дескриптора для шейпера(shaper) трубы предполагался хэш @{},
a массив целых чисел - это его вырожденный вид.

PowerShell
1
"A".."Z"  | @{n=3; skip=1; max=10} |  { $_ }
output:
ActionScript 3
1
((A B C) (E F G) (I J K) (M N O) (Q R S) (U V W))
skip может быть и отрицательным, тогда получится нахлёст

PowerShell
1
"A".."Z"  | @{n=3; skip=-1} |  { $_ }
output:
ActionScript 3
1
((A B C) (C D E) (E F G) (G H I) (I J K) (K L M) (M N O) (O P Q) (Q R S) (S T U) (U V W) (W X Y))
PowerShell
1
"A".."Z"  | @{n=1,3,5; skip=-2} |  { $_ }
output:
ActionScript 3
1
((A) (B C D) (E F G H I) (H) (I J K) (L M N O P) (O) (P Q R) (S T U V W) (V) (W X Y))
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
11.02.2021, 21:12
Цитата Сообщение от alhaos Посмотреть сообщение
Лучше сдохнуть в стремлении к совершенству, чем сойти с ума доказывая всем, что оно недостижимо.
"Ты не дрыгайся! Показывай свою гравицаппу. Если фирменная вещь — возьмём!"
0
 Аватар для alhaos
1934 / 549 / 155
Регистрация: 20.02.2019
Сообщений: 2,675
Записей в блоге: 77
11.02.2021, 23:08
YuS_2, я так понимаю желание быть понятым Вам чуждо, да кто такой чтобы осуждать, виват абсурду.
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
12.02.2021, 02:06
Цитата Сообщение от volodin661 Посмотреть сообщение
в качестве дескриптора для шейпера(shaper) трубы предполагался хэш @{}
Get-PipeChunks
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function Get-PipeChunks{[alias("%%")]
    PARAM(
        [parameter(ValueFromPipeline ,  Mandatory)]
        $obj,
        [parameter(Position = 0,Mandatory = $true)]
        [Hashtable]$ops,
        [Switch]$full
    )
    $i,$j,$k = 0,0,0
    [Type]$t = $obj.GetType()
    while($i -lt $obj.count){
        if(!$re){$re = [Collections.ArrayList]::new()}
        if(!$ret){$ret = [System.Object[]]::new(0)}
        if($re.add($obj[$i]) -eq ($ops.n[$k]-1)){
            $ret += ,($re-as$t)
            rv re -ea 0;$k++
            if($k -ge $ops.n.Count){
                $k = 0
                if($ops.n.Count -eq 1){,$ret[0]}
                else{,$ret}
                rv ret -ea 0
                $i += $ops.skip
            }
        }
        $j++;$i++
        if($j -eq $ops.max){break}
    }
    if($full){
        if($re -and $ops.n.Count -gt 1){$ret += ,($re-as$t)}
        elseif($re){$ret = ,($re-as$t)}
    }
    if($ret){,$ret}
}


PowerShell
1
2
3
,("A".."Z")|%% @{n=3; skip=1; max=20}|%{
    $_;"***"
}
PowerShell
1
2
3
,("A".."Z")|%% @{n=3; skip=-1}|%{
    $_;"***"
}
PowerShell
1
2
3
4
,("A".."Z")|%% @{n=1,3,5; skip=-2}|%{
    $_|%{$_;"***"}
    "="*6
}
volodin661, как хотел?)
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
12.02.2021, 08:25
Цитата Сообщение от alhaos Посмотреть сообщение
я так понимаю желание быть понятым Вам чуждо
не я перешел на аллегории...
Хочешь быть понятым, выражайся яснее, а не:
Цитата Сообщение от alhaos Посмотреть сообщение
а не лепить "горбатого"
Желание твое там, было понятным изначально, но ты опубликовал какой-то код и упомянул какого-то горбатого... Глеб - ты ли это?
Стремление к звездам - качество достойное, конечно... вот, только к звездам стремиться в тапках и трусах - совсем не то же самое, что в скафандре и на звездолёте с правильной скоростью (надеюсь, понятно, что речь про инструмент в рамках раздела, то бишь powershell) ... главное - не сдохнуть от старости, прежде чем достигнешь первой соседней звезды...
0
 Аватар для alhaos
1934 / 549 / 155
Регистрация: 20.02.2019
Сообщений: 2,675
Записей в блоге: 77
12.02.2021, 09:36
YuS_2, давайте закончим здесь, не воспринимайте мое "лепить Горбатого" на свой счет, я имел ввиду этим необходимость писать функции (пусть и самые гениальные), вместо наличия шейпера в языке.
0
 Аватар для alhaos
1934 / 549 / 155
Регистрация: 20.02.2019
Сообщений: 2,675
Записей в блоге: 77
16.02.2021, 06:17
Цитата Сообщение от YuS_2 Посмотреть сообщение
а не лепить "горбатого"
знаете я вот тут подумал получше и пожалуй соглашусь с вашим мнением, ни настолько уж часто нужны эти шейперы, чтобы так уж напрягала отдельная для этого функция, судя по тому как просто это реализуется, это давно было бы уже сделано, если настолько уж было необходимо.
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,022
17.02.2021, 20:18
Приготовил горбатый командлет
( пока очень сырой )

Назвал Get-Down
( полное название «Get-Down-On-It».
в википедии пишут, что-то культурное про смысл одноименной песни, но знакомый англичанин рассказывал, помню, что там всё про е#лю )


По задумке должен быть весьма полезен;

приходящий по трубе массив ты формируешь сам на ходу,
подставляя свои переменные в теле скрипт-блока.
( scriptblock является параметром для Get-Down )

Каждая такая переменная принимает на себя каждый следующий об'ект из трубы.

Короче:
Вот файл: черви.txt

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Черви ( Vérmes )
 
Общий очерк
 
Класс I. – Коловратки (Rotatoria)
 
I Сем. – Панцирные коловратки (Branchionidae)
 
Четырехрогая коловратка (Noteus quadricornis)
 
II Сем. – Гидатины (Hydatinea)
 
Прозрачная гидатина (Hydatina senta)
 
Хищная одноглазая коловратка (Notommata myrmeleo)
 
III Сем. – Филодиновые (Philodinea)
 
Колесник (Rotifer vulgaris)
 
Collidina parasitica
 
IV Сем. – Трубочковые коловратки (Tubicollaridae)
 
Украшенная флоскулария (Floscularia ornata)
 
Общественная коловратка (Conochilus)
 
Класс II. – Звездчатые черви (Gephiei)
 
Зеленая бонеллия (Bonellia viridis)
вот вызов:

PowerShell
1
gc черви.txt | get-down { param ( $a, $skip1, $b, $skip2 )   "$a ^ $b" }
то есть, игнорируем мусорные пробелы и соединяем попарно строки через ^
вот вывод:
Code
1
2
3
4
5
6
7
8
Черви ( Vérmes ) ^ Общий очерк
Класс I. – Коловратки (Rotatoria) ^ I Сем. – Панцирные коловратки (Branchionidae)
Четырехрогая коловратка (Noteus quadricornis) ^ II Сем. – Гидатины (Hydatinea)
Прозрачная гидатина (Hydatina senta) ^ Хищная одноглазая коловратка (Notommata myrmeleo)
III Сем. – Филодиновые (Philodinea) ^ Колесник (Rotifer vulgaris)
Collidina parasitica ^ IV Сем. – Трубочковые коловратки (Tubicollaridae)
Украшенная флоскулария (Floscularia ornata) ^ Общественная коловратка (Conochilus)
Класс II. – Звездчатые черви (Gephiei) ^ Зеленая бонеллия (Bonellia viridis)
Добавлено через 16 минут
про исходник-то забыл:
getdownonit.ps1

Кликните здесь для просмотра всего текста
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function Get-Down { 
 
    param(  
 
        [Parameter(ValueFromPipeLine,Mandatory)]
        [object[]] $obj,
 
        [Parameter(Mandatory,Position=1)]
        [scriptblock]$code
    )
    
    BEGIN {
 
        $Size   = $code.Ast.ParamBlock.Parameters.count
        $Buffer = New-Object System.Collections.ArrayList($Size)
    }
 
    PROCESS {
            [void]$Buffer.Add($obj)
 
            if ($Buffer.Count -eq $Size) {    
                $b = $Buffer;
                $Buffer = New-Object System.Collections.ArrayList($Size)
                $code.Invoke([object[]]$b) 
            }
    }
 
 
    END {
        if ($Buffer.Count -ne 0) {  
            $code.Invoke([object[]]$Buffer)
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2021, 20:18

Запретить пользователям удалять текстовые файлы
Добрый день. Пользователям разрешено создавать и редактировать текстовые файлы, но удалять нельзя. Windows Server 2008 Enterprise....

Как искать все текстовые файлы?
Возможно ли с помощью функции GetAbsolutePathName получить все файлы формата txt независимо от их имен . Когда в параметре просто имя ,...

Склеить текстовые файлы, заданные в качестве аргументов
Разработать командный файл, который бы склеивал текстовые файлы, заданные в качестве аргументов, и сортировал бы строки результирующего...

Объединить текстовые файлы и заменить в них слова
Здравствуйте, помогите, пожалуйста. Есть много однотипных txt файлов, которые надо объединить в один, но при этом везде сочетание букв...

Как открыть текстовые файлы в папке, используя bat
Имеется путь к папке, точно известно, что в ней есть непустые текстовые файлы. @echo off :st echo: Write file's expancion...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru