Macros for SAS Application Developers File Reference

Performs a text substitution on a file. More...

Go to the source code of this file.

Detailed Description

Performs a find and replace on a file, either in place or to a new file. Can be used on files where lines are longer than 32767.

Works by reading in the file byte by byte, then marking the beginning and end of each matched string, before finally doing the replace.

Full credit for this highly efficient and syntactically satisfying SAS logic goes to Bartosz Jabłoński, founder of the SAS Packages framework.


%let file="%sysfunc(pathname(work))/file.txt";
%let str=replace/me;
%let rep=with/this;
data _null_;
  file &file;
  put 'blahblah';
  put "blahblah&str.blah";
  put 'blahblahblah';
%mp_replace(&file, findvar=str, replacevar=rep)
data _null_;
  infile &file;

Note - if you are running a version of SAS that will allow the io package in LUA, you can also use this macro:

[in]infileThe QUOTED path to the file on which to perform the substitution
[in]findvar=Macro variable NAME containing the string to search for
[in]replacevar=Macro variable NAME containing the replacement string
[out]outfile=(0) Optional QUOTED path to the adjusted output file (to avoid overwriting the first file).

SAS Macros

Related Macros

Bartosz Jabłoński
Allan Bowe

Definition in file