SAS命令应用高级技巧--如何从一批SCL,SOURCE文件中查找或替换某字符串

原创 2004年11月03日 14:44:00

SAS命令应用高级技巧--如何从一批SCL,SOURCE文件中查找或替换某字符串

 你是否有这样的麻烦,你在好几个CATALOG下建了上百个SCL或SOURCE文件,突然有一天因为系统变化,必须改动程序,比如有某个特征被大量程序引用了,那你必须一个一个的打开SCL文件,然后查找,然后在替换,想必你在那时肯定痛恨SAS公司的破编辑器了,功能弱智的像微软的记事本一样,如果你不幸不知道这样的技巧,那只能老老实实一个一个的打开,查找,替换、编译、保存、另存,然后在打开另一个文件,如此周而复此
 
 呵,不过幸运的是你看到了这篇文章,从此就可以中气十足的对BOSS说,我绝对把那改动全部该过来了,没问题
 
 好了,不唠叨了,言归正传吧
 
 不知道你有没有用过大名鼎鼎的编辑器ULTRAEDIT呢,相信很多写CODE的人都在用它吧,确实很强的一个编辑器,今天我就用这编辑器中的一个小小功能,那就是查找、替换功能,它可是能在N多文件里做查找替换,我试了,打开上百个文件速度还是不错的,且操作非常方便
 
 好了,知道有这个功能就行了,下面的问题是怎么才能把SAS CATALOG里的程序文件导出来呢?且听我慢慢说来
 
 首先,我们知道,SAS提供了很多快捷的命令直接操作,比如
 
 在命令窗口敲入一个【open 表名】,就可以打开一个表,而不用用鼠标去找这个表名,然后双击
 
 要实现把CATALOG下的程序文件导出,导入 我们必须知道这些命令,如下
   build scl文件 /*打开一个SCL文件*/
   clear /*清除当前窗口内容*/
   file "文件名" /*存盘当前窗口内容到文件*/
   include "文件名" /*把指定文件的内容导入当前窗口*/
   compile /*编译当前程序*/
   save/*存盘当前窗口内容*/
   saveclass/*存盘为类*/
   end/*关闭当前窗口*/
   cancel/*取消当前窗口所作的改动*/
   
 还必须知道这样一个SAS系统视图,里面存放的是SAS的一下文件信息,比如CATALOG下有哪些什么文件啊,是什么样的类型啊,如下
  系统视图sashelp.vcatalg
  主要字段:
   libname 库名,就是CATALOG的名字
   memname 目录名
   objtype 成员类型,比如SCL
   objname 对象名,就是CATALOG下的文件拉

 好了,知道这些就可以把你想要的文件导出来了,下面就是源代码了
  /*导出*/
  %let dir=g:/src/;/*要导出到哪个目录*/
  data _null_;
  set sashelp.vcatalg;
  where libname ="要导出那个库" and memname in (要导出哪些目录) and objtype="要导出什么类型的文件,比如SCL";
  length filename filename1 $200 str $2000;
  filename=compress("&dir"|| memname || "/" || objname || ".scl");
  filename1=compress(libname ||"."|| memname || "." || objname || ".scl");
  str= "dm """ || "build "|| trim(filename1) || ";file" || "'" || trim(filename) || "'"||  ";end;"|| """;";
  put str;
  run;
 OK,现在运行上面的程序,会输出如下结果
  dm "build ***.scl;file'g:/src/***.scl';end;";
  dm "build ***.scl;file'g:/src/***.scl';end;";
  ....


 然后把输出结果拷贝出来,然后粘贴到命令窗口,运行,然后你就会看到窗口闪啊闪啊,如果文件很多的化会闪一会儿的,耐心一点
 运行完了把,然后去你导出的那个目录看吧,是不是生成了很多SCL文件
 咔咔,第一步大功告成

 
 第二步当然是第导出的文件进行操作了,你想干什么就干什么把,如此强大的ultraedit,批查询、替换简直就是A piece of cake.

 好了,假定你所有的改动都该好了,当然是要怎么把改动的结果写入SAS的CATALOG了,很简单,就是把上面的输出结果改把改把,然后再在SAS命令窗口运行就会把所有改动自动写入SAS的CATALOG了,如下

 /*导入*/
 dm "build ***.scl;clear;include '***.scl';save;compile;saveclass;end;"
 
  看看,连complie,saveclass都给你做了,满足了把
 
  此文至此OVER,请君自用,但望转载时注目来处,感激不尽 :)

   

SAS应用技巧-快速在CATALOG的SCL中查找某字符串的方法

proc build c=catalog名 batch browse;print prtfile=文件名 source;run;然后打开该文件名,即可进行查找...
  • AnyJack
  • AnyJack
  • 2004年11月26日 14:33
  • 2241

SAS学习笔记:字符串操作函数

trim(string):删除字符串的拖尾空格;strip(string):删除字符串的前置和拖尾空格;compbl(string):将连续的两个或更多的空格压缩为一个空格;compress(sour...
  • beauty0522
  • beauty0522
  • 2016年04月05日 18:22
  • 3977

UltraEdit正则表达式文本替换

UltraEdit风格正则表达式语法 1、% 功能说明: 匹配一行的开始位置。这个符号表示所寻找的字符在每一行的开始的位置,不包括每一行其上一行的结束字符。 2、$ 功能说明:匹配一行的结束位...
  • vindak
  • vindak
  • 2012年12月02日 03:56
  • 9399

查找和替换目录中所有文件中的某个字符串

1、查找目录下包含某个字符串的文件 例:查找 dir 目录下所有包含 str 的文件。 grep -lr 'str' dir 2、vim替换单个文件中所有字符串方法 例:替...
  • mecho
  • mecho
  • 2015年02月28日 16:49
  • 2158

python替换文件指定字符串

需求:将文件中的全部he替换成s with open('/download/python_practice/a.py','r') as r:     lines=r.readlines() wit...
  • YABIGNSHI
  • YABIGNSHI
  • 2015年12月31日 18:23
  • 8194

sas scl程序设计使用技巧-面向对象的程序设计

sas  scl程序设计使用技巧-面向对象的程序设计(注意,SAS8版以后才支持OOP)SCL是SAS的程序控制语言,同样具有高级语言的一些特性,支持面向对像的程序设计,下面介绍一下怎么用SAS生成类...
  • AnyJack
  • AnyJack
  • 2004年09月20日 13:04
  • 2003

shell脚本之查找与替换(一)

文本查找(searching)与文本替换(substitution)是编写shell脚本时经常用到的两个基本操作。查找文本传统上,有三种程序可以用来查找整个文本文件:grep, egrep(Exten...
  • atnanyang
  • atnanyang
  • 2016年10月19日 18:08
  • 1091

10-1. 在字符串中查找指定字符(15)

 输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。 输入格式: 输入在第1行中给出一个不超...
  • rabbit8848
  • rabbit8848
  • 2014年07月23日 16:50
  • 3199

c语言练习 10-1. 在字符串中查找指定字符(15)

输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c。如果找不到则输出“Not found”;若找到则输出字符串S中从c开始的所有字符。 输入格式: 输入在第1行中给出一个不超过...
  • huozhiwu0424
  • huozhiwu0424
  • 2014年07月28日 21:37
  • 2335

1、读取一个文件,并替换其中指定的字符串为特定字符串

import java.io.*; public class readFile { public static void main(String[] args){ StringBuffer sb...
  • NN179
  • NN179
  • 2012年09月03日 10:30
  • 2109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SAS命令应用高级技巧--如何从一批SCL,SOURCE文件中查找或替换某字符串
举报原因:
原因补充:

(最多只允许输入30个字)