Sas 在FILENAME语句中使用管道和操作系统命令

Sas 在FILENAME语句中使用管道和操作系统命令,sas,Sas,如果我在位置c:/data中有下面的文件夹和sas文件,下面的代码做什么,sas数据集new的可能输出是什么 新的 new.sas7bat 新闻7BAT filename files pipe "find c:/data -name '*.sas7bat"; data new; infile files lrecl=120 pad missover; input; if index(lowcase(_infile_), 'datas') then delete; type = '

如果我在位置c:/data中有下面的文件夹和sas文件,下面的代码做什么,sas数据集new的可能输出是什么

新的

new.sas7bat

新闻7BAT

filename files pipe "find c:/data -name '*.sas7bat";
data new;
  infile files lrecl=120 pad missover;
  input;
  if index(lowcase(_infile_), 'datas') then delete;
  type = 'F';
run;

_infle在此代码中是如何处理的。

infle
语句读取文件时,
\u infle\u
部分是管道命令的输出
infle
在本例中只是获取从操作系统传递的信息,在本例中很可能是Windows,因为
C:\
部分

FIND
在Windows中,搜索文件夹中包含sas7bdat的文件,因此此程序可能正在数据文件夹中搜索sas7bdat文件列表


这个问题中没有任何东西表明涉及到UNIX。FIND是一个WINDOWS和/或UNIX命令

在Unix中,
find
命令是搜索文件系统(目录树)的一个非常强大的工具。使用
-name
谓词的示例将返回与您的模式匹配的文件名。因为您没有以任何其他方式限制它,所以它将从给定的路径开始搜索整个子树

当您在数据步骤中使用
INPUT
语句时,
\u infle
自动变量可用。它将保存从输入文件读取的最后一行。在本例中,输入文件是Unix find命令结果的流

您的SAS程序没有真正完成。实际上,您创建的数据集只有一个名为
type
的变量,该变量的值始终为
“F”
。唯一的信息是,观测值的数量将与找到的SAS数据集的数量相匹配,这些数据集的名称(包括目录路径)不包含字符串
“datas”

因此,如果您想在路径
/data
下查找所有SAS数据集的名称,其中名称(和路径)不包含字符串
datas
,则最有可能需要以下内容:

data new;
  infile "find /data -name '*.sas7bat'" pipe truncover ;
  input fname $256. ;
  if index(lowcase(fname), 'datas') then delete;
  type='F';
run;

这是一个没有尝试或研究的问题。你有SAS吗?试试你发布的代码——用你看到的错误或警告更新问题。未尝试发布的代码,因为它缺少单引号和双引号,以及格式错误的
find
命令(假定用于Windows)。在线文档中可以找到与
infle
语句关联的自动变量
\uinfle
的角色。我没有SAS和unix…因此无法测试它这不是unix命令,C:/Windows。此外,SAS的免费版本可用于学习目的(SAS大学版)。@Reeza-FWIW,SAS大学不支持管道和操作系统命令。