Показать полную графическую версию : Удалить первые/последние N символов каждой строки
Приветствую, помогите пожалуйста сделать BAT скрипт, который удаляет первые N символов каждой строки текстового файла
И второй скрипт, который удаляет последние N символов каждой строки текстового файла
Почему решил BAT, потому что файл больше 100МБ, плюсы и шарп долго очень обрабатывают и кушают ОЗУ
DJ Mogarych
03-01-2023, 20:31
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 »
Благодарю, но мне бы лучше батник.
Проверил сейчас ваш код, работает медленно, к сожалению.
Но меня очень удивило то, что исходный файл 10МБ, а на выходе (без 2 первых символов) 10МБ. Как такое возможно?) Кодировка?
работает медленно, к сожалению. »
Происходит запись на носитель;
что исходный файл 10МБ, а на выходе (без 2 первых символов) 10МБ. Как такое возможно?) »
А что именно не так?
2 символа - 2 байта.
мне бы лучше батник. »
Лучше чем, что?
Проверил сейчас ваш код, работает медленно, к сожалению. »
И Вы думаете, что батник победит все рекорды скорости? :)
скрипт, который удаляет первые 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
второй скрипт, который удаляет последние N символов каждой строки текстового файла »
Для этого будет достаточно заменить шаблон регэкспа...
А что именно не так? »
Я опечатался. Исходная 10МБ, а на выходе 19МБ
И Вы думаете, что батник победит все рекорды скорости? »
Нет, просто для меня это было бы очень удобно, но и за этот вариант огромное спасибо
А подскажите, пожалуйста, какой $pattern использовать для того, чтобы был не номер символа, а конкретный символ.
Например до символа "@" и после символа "@"
до символа "@" »
"^.+(?=@)"
после символа "@" »
"(?<=@).+$"
DJ Mogarych
05-01-2023, 14:32
Если разделитель @ не нужен
("etete@ututu.fi") -replace '@.+'
etete
("etete@ututu.fi") -replace '.+@'
ututu.fi
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.