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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить первые/последние N символов каждой строки

Ответить
Настройки темы
CMD/BAT - Удалить первые/последние N символов каждой строки

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


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

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


Приветствую, помогите пожалуйста сделать BAT скрипт, который удаляет первые N символов каждой строки текстового файла
И второй скрипт, который удаляет последние N символов каждой строки текстового файла

Почему решил BAT, потому что файл больше 100МБ, плюсы и шарп долго очень обрабатывают и кушают ОЗУ

Отправлено: 19:24, 03-01-2023

 

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

fascinating rhythm


Moderator


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

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


Powershell
Код: Выделить весь код
$n = 6

# первые
(gc "C:\temp\Untitled 1.txt") -replace "^.{$n}" > "C:\temp\Untitled 2.txt"

# последние
(gc "C:\temp\Untitled 1.txt") -replace ".{$n}$" > "C:\temp\Untitled 2.txt"

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

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

Отправлено: 20:31, 03-01-2023 | #2



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

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


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


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

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


Цитата DJ Mogarych:
Powershell »
Благодарю, но мне бы лучше батник.

Проверил сейчас ваш код, работает медленно, к сожалению.
Но меня очень удивило то, что исходный файл 10МБ, а на выходе (без 2 первых символов) 10МБ. Как такое возможно?) Кодировка?

Отправлено: 20:57, 03-01-2023 | #3


Аватара для NickM

Ветеран


Contributor


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

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


Цитата Asdshka:
работает медленно, к сожалению. »
Происходит запись на носитель;

Цитата Asdshka:
что исходный файл 10МБ, а на выходе (без 2 первых символов) 10МБ. Как такое возможно?) »
А что именно не так?
2 символа - 2 байта.

Отправлено: 21:10, 03-01-2023 | #4


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Asdshka:
мне бы лучше батник. »
Лучше чем, что?

Цитата Asdshka:
Проверил сейчас ваш код, работает медленно, к сожалению. »
И Вы думаете, что батник победит все рекорды скорости?

Цитата Asdshka:
скрипт, который удаляет первые N символов каждой строки текстового файла »
Код: Выделить весь код
$fin = 'test.txt'
$fout = 'out.txt'
$n = 2
$pattern = "^.{$n}"

$reader = [io.streamreader]::new($fin)
$writer = [io.streamwriter]::new($fout)
while ($reader.peek() -ne -1) {
	$writer.writeline($reader.readline() -replace $pattern)
}
$reader.dispose();$reader.close()
$writer.dispose();$writer.close()
Результат работы с файлом, размером 127Mb:
TotalSeconds : 8,0404748

Цитата Asdshka:
второй скрипт, который удаляет последние N символов каждой строки текстового файла »
Для этого будет достаточно заменить шаблон регэкспа...

-------
scio me nihil scire. Ѫ

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

Отправлено: 10:47, 04-01-2023 | #5


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


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

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


Цитата NickM:
А что именно не так? »
Я опечатался. Исходная 10МБ, а на выходе 19МБ

Цитата YuS_2:
И Вы думаете, что батник победит все рекорды скорости? »
Нет, просто для меня это было бы очень удобно, но и за этот вариант огромное спасибо

А подскажите, пожалуйста, какой $pattern использовать для того, чтобы был не номер символа, а конкретный символ.
Например до символа "@" и после символа "@"

Последний раз редактировалось Asdshka, 04-01-2023 в 20:55.


Отправлено: 20:45, 04-01-2023 | #6


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Asdshka:
до символа "@" »
Код: Выделить весь код
"^.+(?=@)"
Цитата Asdshka:
после символа "@" »
Код: Выделить весь код
"(?<=@).+$"

-------
scio me nihil scire. Ѫ

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

Отправлено: 07:35, 05-01-2023 | #7


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

fascinating rhythm


Moderator


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

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


Если разделитель @ не нужен
Код: Выделить весь код
("etete@ututu.fi") -replace '@.+'
etete
("etete@ututu.fi") -replace '.+@'
ututu.fi

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

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

Отправлено: 14:32, 05-01-2023 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удалить первые/последние N символов каждой строки

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - удалить первые 7 символов в имени файла ВиталийВ Скриптовые языки администрирования Windows 9 03-04-2015 11:50
CMD/BAT - [решено] Добавление строки после каждой строки с подстановкой значения в имя файла d22cva Скриптовые языки администрирования Windows 5 05-01-2015 07:50
Офис и Текст - Как убрать заданное количество символов на начале каждой строки KooDI Программное обеспечение Windows 2 03-03-2013 21:32
2007 - [решено] MS Word. Автоматическая вставка символов в конце каждой строки kirill1994200 Microsoft Office (Word, Excel, Outlook и т.д.) 6 01-10-2012 06:38
CMD/BAT - [решено] Удаление первых 9 символов в каждой строке TXT файла pzh2393 Скриптовые языки администрирования Windows 1 18-05-2012 16:53




 
Переход