检查sas代码中是否存在%include语句
我有SAS代码,其中包括以下代码行 %包括“/sas/dev/compare.sas” 它位于服务器上的位置 /sas/cpm/dev/code 所以,目前我正在手动执行的操作转到上面的路径,打开每个.sas代码(在一个文件夹中,您可以说在/sas/cpm/dev/code位置有4个代码),并检查%include“/sas/dev/compare.sas”代码行是否存在 任何人都可以帮助我而不必手动检查/打开sas代码。如何检查%include“/sas/dev/compare.sas”;存在与否 谁能帮我写sas吗, 我们可以将每一个代码传递给右边的宏检查sas代码中是否存在%include语句,sas,Sas,我有SAS代码,其中包括以下代码行 %包括“/sas/dev/compare.sas” 它位于服务器上的位置 /sas/cpm/dev/code 所以,目前我正在手动执行的操作转到上面的路径,打开每个.sas代码(在一个文件夹中,您可以说在/sas/cpm/dev/code位置有4个代码),并检查%include“/sas/dev/compare.sas”代码行是否存在 任何人都可以帮助我而不必手动检查/打开sas代码。如何检查%include“/sas/dev/compare.sas”;存在与
谢谢您可以通过使用fileexist函数来完成
%let myfile = "/sas/dev/compare.sas";
%macro filecheck;
%if %sysfunc(fileexist(&myfile))
%then % include "/sas/dev/compare.sas";
%else %put The external file &myfile does not exist.;
%mend;
%filecheck;
您可以通过以下方式完成此操作:
- 列出每个文件夹中的所有.sas文件
- 为每个文件创建一个datasetp/infle语句
- 在文件的每一行中搜索
%include”/sas/dev/compare.sas代码>
- 如果找到行,则在日志中打印文件名和行号
file_path=\\sas\SASDATA\momo\file1.sas
file_path=\\sas\SASDATA\momo\file2.sas
file_path=\\sas\SASDATA\momo\file3.sas
file_path=\\sas\SASDATA\momo\file4.sas
日志:file4.sas是唯一没有此%include”/sas/dev/compare.sas”的文件代码>
这不是unixgrep
命令的作用吗?它不在文件检查之上,而是%include语句是否存在于.sas代码中%if%sysfunc(fileexist(&myfile))检查文件是否存在,如果存在,它将执行代码,否则它会说文件不存在非常感谢,将尝试此方法
file_path=\\sas\SASDATA\momo\file1.sas
file_path=\\sas\SASDATA\momo\file2.sas
file_path=\\sas\SASDATA\momo\file3.sas
file_path=\\sas\SASDATA\momo\file4.sas
\\sas\SASDATA\momo\file1.sas includes @ line _N_=1
\\sas\SASDATA\momo\file2.sas includes @ line _N_=1
\\sas\SASDATA\momo\file4.sas includes @ line _N_=1