专栏首页老Z的博客SAS获取某目录下所有指定类型的文件名称

SAS获取某目录下所有指定类型的文件名称

今天看到一个群友提的一个问题:SAS中如何简单地获取某一目录下所有指定类型的文件名称并赋值为宏变量?用常规的方法可能要20多行代码,如果用FILENAME PIPE只需要9行代码就可以轻松解决,语法如下:

FILENAME fileref PIPE 'UNIX-command' ;filerefis the name by which you reference the pipe from SAS.PIPEidentifies the device-type as a UNIX pipe.'UNIX-command'is the name of a UNIX command, executable program, or shell script to which you want to route output or from which you want to read input. The commands must be enclosed in either double or single quotation marks.

以获取程序所在目录下所有TXT文件名为例,实现代码如下:

filename filelst pipe "ls ./*.txt | sed -e 's#.*/##; s#\..*$##' | paste -sd '|' -";

data _null_;
    infile filelst lrecl=32767;
    input;
    call symputx('filelst', _INFILE_, 'L');
run;

filename filelst clear;

简单介绍一下上面的UNIX命令:其中的s#.*/##是用来去掉目录;s#\..*$##是用来去掉文件后缀;命令paste,顾名思义就是将几个文件连接起来;选项-s的作用是将每个文件作为一个处理单元;选项-d的作用是用来设定间隔符。连接功能也可以用AWK来实现,即:

filename filelst pipe "ls ./*.txt | sed -e 's#.*/##; s#\..*$##' | awk 'ORS=""|""'";

不过这个命令有一个小问题,就是在最后会多出一个间隔符,需要在后续的DATA步中处理一下。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SAS宏程序中的查询

    我们在写相对复杂的宏的时候,通常会在开始位置加一些判断,比如判断某个变量是否在、一个路径是否存在、一个路径下面某种文件是否存在。。。

    专业余码农
  • SAS获取某目录下某种类型文件最后修改时间

    今天介绍一下用FILENAME PIPE来获取某一目录下某种类型文件的最后修改时间。比如要获取程序所在目录下SAS数据集的最后修改时间,代码如下:

    专业余码农
  • 正则表达式之单词边界(\b)

    最近在写一个宏(用来检查Define.xml中CRF页码是否与aCRF上的页码一致)的时候有用到单词边界(“\b”)这个定位符,在SAS在线文档中有其说明:\b...

    专业余码农
  • 华为突遭谷歌釜底抽薪!官方安卓不再支持华为手机

    刚刚,路透社曝光称谷歌母公司Alphabet已按特朗普要求,停止与华为相关的业务和服务,涉及硬件、软件和技术服务方面,包括旗下智能手机操作系统:安卓。

    智能算法
  • 华为突遭谷歌釜底抽薪!官方安卓不再支持华为手机

    刚刚,路透社曝光称谷歌母公司Alphabet已按特朗普要求,停止与华为相关的业务和服务,涉及硬件、软件和技术服务方面,包括旗下智能手机操作系统:安卓。

    昱良
  • Code Review之delete后置空

    大部分同学应该都发现了,单例的destoryInstance函数没有在delete之后将s_pInstance 置空。本次使用没问题,但下次getInstanc...

    用户5521279
  • 【每日算法Day 91】求解数组中出现次数超过1/3的那个数

    这是求解众数的升级版: 【每日算法Day 90】5种方法:求解数组中出现次数超过一半的那个数[2]但是这题没有保证一定存在满足条件的数,不过不要紧。

    godweiyang
  • 在Angular里使用rxjs的异步API - Observable

    下面是消费端如何调用这个返回Observable<Hero[]>的TypeScript代码:

    Jerry Wang
  • flumeng-kafka-plugin

    github 参考地址:https://github.com/beyondj2ee/flumeng-kafka-plugin/tree/master/flume...

    sanmutongzi
  • SpringBoot基础(一)

    原文:https://maoli.blog.csdn.net/article/details/103435577

    润森

扫码关注云+社区

领取腾讯云代金券