Форум программистов, компьютерный форум, киберфорум
Софт: Текстовые редакторы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 13
1

Как заставить Notepad++ работать быстрее?

18.05.2020, 02:47. Просмотров 708. Ответов 31

Всем Привет,

Использую Notepad++ для большого количества txt файлов, т.е. за раз около 100 файлов каждый примерно 50-150mb, в каждом файле 1,5-5 млн строк.
Каждый файл состоит из похожих 3 строк:
Pattern: 1
Address: PBAesScHhcoRDV6iasyJ5yzXxs9P8zsL3
Privkey: Rjn8S7o7mykp9yUtLi8Y7kgHXSDFpywEXUEcKq7vRxL9mdWTn
редактирование заключается в удалении "Pattern: 1", "Address: ", "Privkey: "
в самом редакторе в поиске "Найти в файлах" удаляю сразу во всех файлах, то что выше в кавычках, то есть просто замена на пустое поле(не пробел) во всех файлах.

Проблема в том что это происходит медленно, процессор загружен всего на 8-15% и ссд 2-20mb в секунду, в диспетчере и в Aida64 видно что отработка идёт на одном ядре процессора, остальные простаивают, из-за этого много времени занимает удаление не нужных слов из всех файлов.

Пробовал другие редакторы(SkimEdit, Textex и несколько других), они не умеют сразу всю папку с кучей файлов редактировать.

как сделать так, чтобы Notepad++ использовал все имеющиеся вычислительные ресурсы?
как заставить его работать быстрее?
Может есть другой редактор в котором можно сразу 100 файлов редактировать?

Ещё вопрос, как удалить всю строку "Pattern: 1", что нужно в поле "Заменить на:" прописать?

Версия Notepad++ 7.8.6 64 bit

моё железо:
Процессор xeon 3680 6 ядер 3,46Ghz
ОЗУ 12 gb(трёхканал)
ssd 240 gb
Win 7 Pro 64

Добавлено через 1 минуту
Может у кого-то есть мысли, как можно весь процесс автоматизировать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2020, 02:47
Ответы с готовыми решениями:

Как заставить функцию работать быстрее?
Может кто подсказать в плане оптимизации как заставить функцию Check() работать быстрее? Применил...

[Статья] Как заставить Вашу программу на VB работать быстрее?
Автор: Рут Глушкин, VBStreets Прежде всего заставьте программу работать, а затем беспокойтесь о...

Оцените, будьте так любезны! Как заставить игры работать чуточку быстрее на таком компьютере?
---------------------------------- 01 - Операционная система ---------------------------------- ...

Можно ли заставить ЖД работать быстрее?
Подключил я внешний хард ко второму пню, чтобы перегнать туда инфу с компа, но появилась надпись...

31
Эксперт .NET
6792 / 4409 / 1052
Регистрация: 25.05.2015
Сообщений: 13,394
Записей в блоге: 13
23.05.2020, 20:26 21
MarKaPolo, можно ещё вот такой вариант:
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
$files = Get-ChildItem -Path .\ -Filter 13*.txt -Recurse -File -Name 
 
$time1 = Get-Date
 
function Clean-Line {
    [CmdLetBinding()]
    param (
        [Parameter(ValueFromPipeline)]
        [string[]] $lines
    )
    process {
        foreach ($line in $lines) {
            if ($line.Contains("Pattern: 1")) {
                continue;
            }
 
            $line -replace 'Address: ', '' -replace 'Privkey: ', ''
        }
    }
}
 
foreach ($file in $files) {
  $newfile = [System.IO.Path]::ChangeExtension($file, ".new");
  Get-Content $file -ReadCount 20000 `
    | Clean-Line `
    | Set-Content $newfile
  #Remove-Item $file
  #Move-Item $newFile $file
}
 
$time2 = Get-Date
$span = $time2 - $time1;
[console]::WriteLine("The lapsed time is: {0:c}", $span)
6 мелких файлов за 10 секунд. Один 200МБ файл за 58 секунд. Медленнее, но не намного. Ещё оптимизировать что-то смысла не вижу, выигрыш незначителен.

Если у вас заранее был установлен PowerShell, как у любого уважающего себя виндового сисадмина, то вообще ничего скачивать не надо.
1
2709 / 1240 / 214
Регистрация: 10.12.2013
Сообщений: 4,173
23.05.2020, 23:15 22
Цитата Сообщение от Rius Посмотреть сообщение
Если у вас заранее был установлен PowerShell, как у любого уважающего себя виндового сисадмина
Уважающий себя админ - это ленивый админ, исповедующий корневое правило: работает - не трогай.
Минимальным виндусом, почти отвечающим этому правилу, является версия 7, powershell в ней из коробки.
Почти - это потому что powershell там версии 2.
Но версия 2 на текущий момент признана microsoft полностью устаревшей и не поддерживаемой.
Поэтому какие-то телодвижения всё равно необходимы.
Либо обновить до версии powershell for windows 5.1
Либо установить версию powershell core, которая на текущий момент имеет номер версии 7.0.

Если совсем скучно( самоизоляция, то, сё ), то можно установить и 5.1 и 7.0; они не перемешиваются.

Поскольку ТС публично признался, что имеет Windows 7, обсуждать особенности инструментальной оснастки windows 10 не буду.
0
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 13
24.05.2020, 11:36  [ТС] 23
Rius,
Bash
1
2
3
4
5
@echo off
for %%f in (*.txt) do (
    echo %%f
    sed.exe -i -E '/^5/d'
)
или
Bash
1
sed -i -E '/^5/d' *.txt
при данном коде у меня в появляется вот такое сообщение
sed.exe: -e expression #1, char 1: unknown command: `''
я смотрел на разных ресурсах, везде именно так как вы написали, я менял по разному батник, не выходит у меня никак аленький цветочек!)
что я делаю не так?
0
Эксперт .NET
6792 / 4409 / 1052
Регистрация: 25.05.2015
Сообщений: 13,394
Записей в блоге: 13
24.05.2020, 11:40 24
Цитата Сообщение от Rius Посмотреть сообщение
Батник только надо будет немного поправить под это дело:
    sed-4.7-64bit.exe -i -E "..... <<<<<<<<<<<<<<<
Двойные кавычки.
1
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 13
25.05.2020, 03:35  [ТС] 25
Цитата Сообщение от Rius Посмотреть сообщение
Двойные кавычки.
поправил батник, всё заработало, по скорости с notepad++, небо и земля.

посмотрел по grep инфу, накидал вот такой батник:
Bash
1
2
3
4
5
6
7
@echo off
for %%f in (*.txt) do (
    echo %%f
 
C:\Program_Files_(x86)\GnuWin32\bin\grep.exe --file=J:\2\10.txt * -w(точное совпадение) -H(печатать имя 
 
файла для каждого совпадения) "%%f"
в скобках просто пояснение что я хотел этим добиться, естественно в самом батнике этого нет.
и так пробовал
Bash
1
2
3
4
5
6
@echo off
for %%f in (*.txt) do (
    echo %%f
 
grep -w -H --file=J:\2\10.txt "%%f"
)
J:\2\10.txt это список слов которые нужно найти
ну как обычно, аленький цветочек не вышел!
Прошу помощи, подскажите где косяк в коде?
0
Эксперт .NET
6792 / 4409 / 1052
Регистрация: 25.05.2015
Сообщений: 13,394
Записей в блоге: 13
25.05.2020, 06:03 26
Bash
1
grep  -n -w --file=words.list *.txt
Обратите внимание, что кодировка текста в файле паттернов и в проверяемых должна совпадать.
1
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 13
26.05.2020, 03:30  [ТС] 27
Цитата Сообщение от Rius Посмотреть сообщение
BashВыделить код
1
grep  -n -w --file=words.list *.txt
Bash
1
grep  -n -w --file=J:\2\10.txt *.txt
в таком виде почему-то не работает, консоль закрывается так быстро, что не успеваю прочесть причину.

попробовал вот так
Bash
1
2
3
4
5
6
@echo off
for %%f in (*.txt) do (
    echo %%f
 
grep  -n -w --file=J:\2\10.txt "%%f" >> mac.txt
)
работает, но есть проблема, поиск осуществляется только в текущей папке, без вложенных, пробовал добавлять куда возможно -r или -R, но безрезультатно, поиск идёт только в текущей папке. Пробовал так
Bash
1
2
3
4
5
6
@echo off
for %%f in (*.txt) do (
    echo %%f
 
grep  -Rnw --file=J:\2\10.txt "%%f" >> mac.txt
)
ничего!
вообще не работает, консоль на мгновение открывается и сразу закрывается.
На всех сайтах на которых описываются примеры использования grep, "-R" добавляется так: grep -R, а у меня не работает!) почему?где я косячу с кодом?
0
Эксперт .NET
6792 / 4409 / 1052
Регистрация: 25.05.2015
Сообщений: 13,394
Записей в блоге: 13
26.05.2020, 06:22 28
MarKaPolo,
Файлы:
Bash
1
2
3
4
5
6
λ ls -R .                   
.:
1.txt  2/  2.txt  words.list
 
./2:
3.txt
Поиск:
Bash
1
2
3
4
λ grep -n -w -r --file=words.list --include=*.txt
1.txt:1:123
2/3.txt:1:123
2.txt:1:123
Цитата Сообщение от MarKaPolo Посмотреть сообщение
консоль закрывается так быстро, что не успеваю прочесть причину
Так надо запустить консоль, а из неё команду. Очевидно же.
1
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 13
31.05.2020, 23:34  [ТС] 29
Хочу установить линукс и запустить в нем используя рамдиск(tmpfs)
это можно ведь в любом дистрибутиве? пока смотрю в сторону Минт или Manjaro xfce, может есть

Под это дело собираюсь новый комп собрать на китайской материнке с двумя процами xeon 2678v3. Оперативки 64 или 128 поставить. винт наверно обычный сата, потому что ведь всё всё будет обрабатываться в tmpfs, т.е. сначала загружаться с винта в tmpfs, правильно? обратно выгружать ничего не нужно, только результат поиска который пару килобайт занимает.

будет ли например Минт использовать все ресурсы в 24 ядра и 48 потоков процессоров при работе grep? нет ли каких-то заморочек в этом плане c grep или с Минт?

и последний вопрос, будет ли Минт работать так же если запускать не с флешки, а в виртуалке VMware? наверно лучше с флешки, т.к. винда и виртуалка подъедят немного ядер и ресурсов компа?
0
2709 / 1240 / 214
Регистрация: 10.12.2013
Сообщений: 4,173
01.06.2020, 01:29 30
Цитата Сообщение от MarKaPolo Посмотреть сообщение
Под это дело собираюсь новый комп собрать на китайской материнке
под какое дело? под запуск утилиты sed ? )
0
0 / 0 / 0
Регистрация: 12.05.2020
Сообщений: 13
01.06.2020, 02:15  [ТС] 31
Цитата Сообщение от volodin661 Посмотреть сообщение
под какое дело? под запуск утилиты sed ? )
нет, sed на моем 6 ядернике работает нормально, скорость меня устраивает,
нужен grep, проблема в том что я его запускаю в консоли винды, и файл со списком искомых слов состоит из примерно 2млн слов, это не слова а адреса вот такие "PBAesScHhcoRDV6iasyJ5yzXxs9P8z".
а количество адресов в которых ищется совпадение более 100млн в день!
если я сейчас на своем железе запущу поиск 2 млн внутри 100млн, то такой поиск займет наверно неделю-две!(
при поиске загрузка 6 ядер моего процессора от 7 до 20 % скачет, гипертрейдинг включен, но работают только сами ядра процессора.
поэтому и хочу установить минт и рамдиск, может тогда увеличится скорость и загрузка процессора и потоков.

Добавлено через 6 минут
линукс сможет задействовать 24 ядра и 48 потоков на всю?
я в любом случае буду брать такую машину, просто спрашиваю есть ли в лине какие-то ограничение на количество ядер/потоков, процессоров будет 2. Может под двухпроцессорную систему с 24 ядрами нужен не Минт а другой спец. для таких систем дистрибутив?
Чтобы пока комплектуха с али не приедет, начать разбираться в этом вопросе.
0
2491 / 1264 / 481
Регистрация: 06.06.2017
Сообщений: 4,242
20.06.2020, 14:11 32
Цитата Сообщение от FlasherX Посмотреть сообщение
автор nhrt в конце прошлого года обещал ускорить утилиту, но пока тихо.
Обновил-таки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2020, 14:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как заставить сайт написанный на 5.3 заставить работать на 5.6? Как принудительно включить register_globals?
Есть древний сайт. Работает на php 5.3. Как объяснил разработчик данного сайта - все дело в...

Как заставить точку двигаться плавно и быстрее?
Наверно это очень нелепый и глупый вопрос, но всё-же рискну задать. В QBasic можно сделать так,...

Как будет быстрее работать с переменной $content?
Здравствуйте! Попробовал искать через поиск, но он упорно не работает. У меня такой вопрос: ...

Как почистить компьютер, чтобы он стал работать чуть быстрее?
Здравствуйте. Как можно почистить компьютер, чтобы он стал работать чуть быстрее, есть хорошие...

Как быстрее будет работать SELECT для 100 млн строк
Есть 100 миллионов строк, как быстрее будет работать выборка: 1) Загнать их все в 1 таблицу 2)...

Как заставить работать ? :)
Form1.label6.caption := FloatTostr (dosp); if Dosp &lt;=0.1 then Form1.label7.caption := '0.1'; ...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.