Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Чтение вывода файла со 2 строки и по 3 строку снизу

Ответить
Настройки темы
PowerShell - [решено] Чтение вывода файла со 2 строки и по 3 строку снизу

Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте умы нашей планеты. Прошу помочь с мелким вопросом, но инфы толковой найти не удается. Да и время поджимает.
Суть в чем команда
Код: Выделить весь код
$export = cmd /c """$csptest"" -keyset -enum -fqcn -verifycontext -machinekeys" |out-file C:\Users\*\Desktop\1\keys.txt -enc utf8
выводит список ЭЦП с флешки в файл, но программа csptest.exe добавляет свою техническую инфу в файл, и соответственно дальнейшая обработка файла той же программой эту информацию использует и ругается...
Короче вывод команды
Код: Выделить весь код
CSP (Type:80) v4.0.9019 KC1 Release Ver:4.0.9963 OS:Windows CPU:AMD64 FastCode:READY:AVX. (НЕ нужная для команд инфа)
AcquireContext: OK. HCRYPTPROV: 16650576 (НЕ нужная для команд инфа)
\\.\FAT12_T\************(НУЖНАЯ для команд инфа)
\\.\FAT12_T\************(НУЖНАЯ для команд инфа)
OK. (не нужная для команд инфа)
Total: SYS: 0,063 sec USR: 0,047 sec UTC: 0,105 sec (НЕ нужная для команд инфа)
[ErrorCode: 0x00000000] (НЕ нужная для команд инфа)
Очень надо чтобы либо вывод в файл был только результата команды без тех. инфы (2 строки сверху, и последние 3 строки в конце файла)
или если это невозможно, то взять из файла диапазон только результата команды без тех. инфы (2 строки сверху, и последние 3 строки в конце файла) и может перезаписать в другой файл или в тот же
Как то так.
Не пинайте сильно ...

Отправлено: 17:41, 26-10-2020

 

Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Вывод команды проверить не могу, поэтому из файла.

Код: Выделить весь код
(Get-Content keys.txt) -match '^\\\\' | Set-Content keys.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:14, 26-10-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


ownsmir, объяснение таково, что без бутылки не разобраться.
На счёт csptest.exe не в курсе; теоретически можно лишь предположить: либо указаны лишние ключи, либо должен быть ключ отсеивающий "мусор", хотя если нет ни того ни другого, скорее всего - план "Б". Однако прежде, не могли бы вы более чётко сформулировать свою мысль какие именно строки и куда. Давайте на некотором примере. Допустим, есть файл содержания:
Код: Выделить весь код
1 not
2 not
3 need
4 need
5 not
6 not
7 not
8 need
9 need
0 need
Из него нужно вынуть строки 3 и 4, а также с 8 по 0. Сделать это можно, например, так:
Код: Выделить весь код
($$=Select-String '\S' X:\path\in.txt).Where{
  $_.Linenumber -in (3,4 + ($$.Count - 2)..$$.Count)
}.Line | Out-File X:\path\out.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:23, 26-10-2020 | #3


(*.*)


Сообщения: 36489
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


Цитата ownsmir:
без тех. инфы (2 строки сверху, и последние 3 строки в конце файла) »
Не вникая в содержимое файла, просто по строкам можно выбрать из массива
Код: Выделить весь код
$a = @(Get-Content -Path keys.txt)
$i = 2
while ($i -le [int]($a.length-4)) {
$a[$i] | Out-File -Append keys-new.txt
$i++
}
Это не очень эффективно, зато любой может осилить, т.к. while и основы массивов проходят еще на уроках информатики, наверное :)

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:25, 26-10-2020 | #4


Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
ownsmir, объяснение таково, что без бутылки не разобраться.
На счёт csptest.exe не в курсе; теоретически можно лишь предположить: либо указаны лишние ключи, либо должен быть ключ отсеивающий "мусор", хотя если нет ни того ни другого, скорее всего - план "Б". Однако прежде, не могли бы вы более чётко сформулировать свою мысль какие именно строки и куда. Давайте на некотором примере. Допустим, есть файл содержания:
Код:
1 not
2 not
3 need
4 need
5 not
6 not
7 not
8 need
9 need
0 need »
Извиняюсь) Показалось расписал подробно) Попробую расписать конкретнее:
Вывод в файл команды содержит тех информацию, ее нужно исключить из файла.
Файл (на примере выше) выглядит так:
Код: Выделить весь код
1 not
2 not
3 need
4 need
5 need
6 need
7 not
8 not
9 not
т.е. команда вроде статично вставляет тех информацию в первые 2 строки и последние 3, строк между началом и концом, всегда разное количество.
собственно задача, как раз, строки между началом (после 2 строки) и концом (до 3х строк до конца) либо вывести в другой файл, либо перезаписать существующий, либо использовать из файла только этот диапазон строк.

Цитата Vadikan:
Цитата ownsmir:
без тех. инфы (2 строки сверху, и последние 3 строки в конце файла) »
Не вникая в содержимое файла, просто по строкам можно выбрать из массива
Код:
$a = @(Get-Content -Path keys.txt)
$i = 2
while ($i -le [int]($a.length-4)) {
$a[$i] | Out-File -Append keys-new.txt
$i++
}
Это не очень эффективно, зато любой может осилить, т.к. while и основы массивов проходят еще на уроках информатики, наверное »
Спасибо огромное! Работает!

Отправлено: 09:18, 27-10-2020 | #5


Новый участник


Сообщения: 46
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
ownsmir, объяснение таково, что без бутылки не разобраться.
На счёт csptest.exe не в курсе; теоретически можно лишь предположить: либо указаны лишние ключи, либо должен быть ключ отсеивающий "мусор", хотя если нет ни того ни другого, скорее всего - план "Б". Однако прежде, не могли бы вы более чётко сформулировать свою мысль какие именно строки и куда. Давайте на некотором примере. Допустим, есть файл содержания:
Код:
1 not
2 not
3 need
4 need
5 not
6 not
7 not
8 need
9 need
0 need
Из него нужно вынуть строки 3 и 4, а также с 8 по 0. Сделать это можно, например, так:
Код:
($$=Select-String '\S' X:\path\in.txt).Where{
$_.Linenumber -in (3,4 + ($$.Count - 2)..$$.Count)
}.Line | Out-File X:\path\out.txt »
Так же и Вам спасибо большое! Уверен Ваш вариант так же рабочий. но вариант Vadikan показался проще для моего понимания)

Отправлено: 09:35, 27-10-2020 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Возможно, более продуктивным будет не выбирать нужные строки, а исключать ненужные. Например (powershell):
Код: Выделить весь код
(gc "D:\temp\csp.txt") -notmatch "^CSP|^AcquireContext|^OK|^Total|^.ErrorCode"
Нужно проанализировать какое-то количество файлов и понять, в чём сходство в нужных и ненужных строках, чтобы определить критерии отбора.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:36, 27-10-2020 | #7


(*.*)


Сообщения: 36489
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


Цитата ownsmir:
вариант Vadikan показался проще для моего понимания) »
Ок, значит не зря написал

На самом деле Get-Content автоматически создает массив строк, т.е. его даже не надо объявлять, и первая строка могла быть просто
Код: Выделить весь код
$a = Get-Content -Path keys.txt
Но я счел, что исходный вариант будет нагляднее (меньше магии).

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:28, 28-10-2020 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Чтение вывода файла со 2 строки и по 3 строку снизу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Построчное чтение файла и работа с элементами строки Jackoe89 Скриптовые языки администрирования Windows 5 10-10-2020 22:39
Любой язык - [решено] Удаление дубликатов строк из текстового файла со сравнением по две строки Uragan66 Скриптовые языки администрирования Windows 54 18-08-2020 22:33
CMD/BAT - Построчно чтение строки из файла с удалением ее irvicon Скриптовые языки администрирования Windows 4 11-06-2018 11:33
.NET - [решено] vb.net чтение конкретной строки файла RUVATA Программирование и базы данных 7 19-08-2010 10:21
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42




 
Переход