Post by Arne VajhøjPost by Arne Vajhøj$ type bc.eve
all replace "#include ""b/" "#include ""c/"
exit
$ type cd.tpu
eve_all_replace("#include ""c/", "#include ""d/");
eve_exit();
Just realized that one is custom not standard.
!
! Replace all occurences of string with another string (without
! confirm).
!
! High-level.
!
procedure eve_all_replace(fndstr,rplstr)
local fnd_string,
rpl_string,
pos_mark,
count_integer;
if not (eve$prompt_string(fndstr,fnd_string,"Old string: ",
"No old string given")) then
return;
endif;
if not (eve$prompt_string(rplstr,rpl_string,"New string ",
"No new string given")) then
return;
endif;
pos_mark:=mark(none);
set (screen_update, off);
eve$all_replace(fnd_string,rpl_string,count_integer);
position (pos_mark);
set (screen_update, on);
delete (pos_mark);
message("Total of "+str(count_integer)+" replaces");
endprocedure;
!
! Replace all occurences of string with another string (without
! confirm).
!
! Low-level.
!
procedure eve$all_replace(fndstr,rplstr,count)
local find_mark;
position (beginning_of(current_buffer));
count:=0;
loop
find_mark:=search_quietly(fndstr, forward);
exitif find_mark = 0;
count:=count+1;
position (find_mark);
copy_text (rplstr);
erase_character (length(fndstr));
endloop;
endprocedure;
eve_all_replace may be custom, but as far as I know eve_global_replace
is standard. Here's an example of using TPU as a poor man's Perl:
$ edit/tpu/nodisplay/noinitialization -
/section=sys$library:eve$section.tpu$section -
/command=sys$input/output=myfile.txt myfile.txt
input_file := GET_INFO (COMMAND_LINE, "file_name");
main_buffer:= CREATE_BUFFER ("main", input_file);
POSITION (BEGINNING_OF (main_buffer));
eve_global_replace("foo","bar");
out_file := GET_INFO (COMMAND_LINE, "output_file");
WRITE_FILE (main_buffer, out_file);
quit;
^Z
But yeah, Perl is way easier:
$ perl -pi -e "s/foo/bar/g;" myfile.txt