Скрипт Notepad++ CS проходит по строкам и изменяет определенные значения

Скрипт Notepad++ CS проходит по строкам и изменяет определенные значения

Я раньше не использовал CS Script с Notepad++, но я работаю над несколькими большими файлами, где мне нужно создать скрипт. Обычно я работаю в Excel и использую VBasic, но файлы слишком велики для Excel. Я установил CS Script и создал страницу скрипта, но ничего не знаю о коде, поэтому мне бы очень пригодилась помощь. Ниже приведен пример строк в файлах, которые у меня есть.

1.  699;2022-06-30 18:44:03.187;1.1.8;2409;Line_1_IP_Router:0/1/0;w;15.9371195;15.9371194999999997;0.000
2.  699;2022-06-30 18:45:03.179;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.183062;0.245942499999999953;59.992
3.  699;2022-06-30 18:46:03.173;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.315498;0.132436000000001997;59.994
4.  699;2022-06-30 18:47:03.169;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.40275;0.0872519999999994411;59.996
5.  699;2022-06-30 18:48:03.163;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.469275;0.066524999999998613;59.994
6.  699;2022-06-30 18:49:03.154;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.428036;-0.0412390000000009138;59.991
7.  699;2022-06-30 18:50:03.152;1.1.8;2409;Line_1_IP_Router:0/1/0;w;16.565973;0.137937000000000864;59.998

Столбцы в Excel разделены символом ;. Я хочу начать со второй строки и пройтись по каждой строке до конца файла.

В каждой строке он должен проверить, является ли число в предпоследнем столбце (т.е. перед последним ;) отрицательным. Если это не так, он просто переходит к следующей строке. Если оно отрицательно, он должен изменить числа в последних трех столбцах 0.

Итак, основываясь на моем примере выше, это изменит строку 6 на то, что я показал ниже. Все остальные строки останутся прежними.

6.  699;2022-06-30 18:49:03.154;1.1.8;2409;Line_1_IP_Router:0/1/0;w;0;0;0

Надеюсь, все это имеет смысл, и я был бы очень признателен за любую помощь. Я уверен, что это довольно простой код для кого-то, кто знаком с CS Script. Спасибо заранее.

решение1

Я не знаю скрипт CS, но это можно сделать с помощью стандартной операции поиска/замены (CTRL+H) с регулярным выражением

найдите ;[0-9.]*;-[0-9.]*;[0-9.]*$и замените на ;0;0;0.

Объяснение: [0-9.]*ищет любое количество (даже 0) символов из диапазона 0- 9или ., $соответствует концу строки. Шаблон также будет соответствовать строкам, заканчивающимся на eg

;;-;
;1.2.3;-4..5;6....7

Скриншот

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

Связанный контент