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