Notepad++ CS スクリプトは行をループし、特定の値を変更します

Notepad++ CS スクリプトは行をループし、特定の値を変更します

これまで Notepad++ で CS Script を使用したことはありませんが、スクリプトを作成する必要があるいくつかの大きなファイルを扱っています。私は通常 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 の列は で区切られています;。2 行目から開始して、ファイルの最後まで各行をループします。

各行で、最後から 2 番目の列 (つまり、最後の列の前;) の数値が負であるかどうかをチェックする必要があります。負でない場合は、次の行に移動します。負の場合は、最後の 3 つの列の数値を変更する必要があります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.$行末に一致します。このパターンは、例えばで終わる行にも一致します。

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

スクリーンショット

実際の要件が、前の行の値に基づいて 1 行のデータを置き換えることである場合は、さらに困難になります。

関連情報