I had:
Bus.con = [
101 138 1 0 2 1;
102 138 1 0 2 1;
...
124 138 1 0 2 1;
201 138 1 0 2 1;
202 138 1 0 2 1;
...
];
Shunt.con = [
106 100 138 60 0 -1 1;
206 100 138 60 0 -1 1;
306 100 138 60 0 -1 1;
];
I wanted:
Bus.con = [
1 138 1 0 2 1;
2 138 1 0 2 1;
...
24 138 1 0 2 1;
25 138 1 0 2 1;
26 138 1 0 2 1;
...
];
Shunt.con = [
6 100 138 60 0 -1 1;
30 100 138 60 0 -1 1;
54 100 138 60 0 -1 1;
];
One problem is that the component number might be the same as a parameter (which I don't want to change). Two tools here:
- re-builder - interactively build a regular expression.
- (query)-replace-regexp - replace a regexp with another
- elisp in regexps - do anything with a regexp
This led to the following three replacements:
replace " 1\([0-2][0-9]\) " with " \1 "replace " 2\([0-2][0-9]\) " with " \,(+ 24 string-to-int \1)) "
replace " 3\([0-2][0-9]\) " with " \,(+ 48 string-to-int \1)) "by doing it as a query I made sure I was only replacing the correct stuff.
I even had time to write this blog post.