Grep 变量在sas数据集中不存在
我试图通过UNIX命令检查变量Grep 变量在sas数据集中不存在,grep,sas,cat,Grep,Sas,Cat,我试图通过UNIX命令检查变量GROUP是否存在于SAS数据集中,但不幸的是,它显示GROUP变量不存在于数据集中,但是GROUP变量存在于SAS数据集中 在区分大小写和全字匹配的命令中,我分别使用grep命令的I和w选项。但是UNIX命令仍然没有给出预期的结果。有什么方法可以解决这个问题吗 下面是我正在使用的命令: sasfile="sasdata" rwords="GROUP" cat $sasfile | grep -iqw "$rwords" 谢谢你你可以试试: sasfile="s
GROUP
是否存在于SAS数据集中,但不幸的是,它显示GROUP
变量不存在于数据集中,但是GROUP
变量存在于SAS数据集中
在区分大小写和全字匹配的命令中,我分别使用grep命令的I
和w
选项。但是UNIX命令仍然没有给出预期的结果。有什么方法可以解决这个问题吗
下面是我正在使用的命令:
sasfile="sasdata"
rwords="GROUP"
cat $sasfile | grep -iqw "$rwords"
谢谢你你可以试试:
sasfile="sasdata"
rwords="GROUP"
grep -iw "$rwords" "$sasfile"
这些命令与原始命令之间的唯一区别是我省略了cat
和grep的quiet标志-q
sasdata
中的示例输入:
fasd group
fdsfds fdsfdsa
fdsfd as GROUP afdsfdsa
输出:
fasd group
fdsfd as GROUP afdsfdsa
如先前评论中所述 SAS数据集使用专有格式存储在磁盘文件中。 可能有编码和存储方法不能产生 您在所述磁盘文件的纯文本检查中查找的信息 在SAS会话中运行SAS代码是收集数据集信息的最终方式 那代码是什么样子的
Proc内容
- 使用
函数的数据步骤或宏代码VARNAME
- 。。。还有很多其他的方法
此选项设计用于运行SAS 以批处理模式或通过shell脚本。如果指定此选项 SAS以交互方式启动线路模式会话。
STDIO选项 覆盖DMS、DMSEXP和EXPLORER系统选项。斯特迪奥酒店 选项不影响Stdio、Stdin和Stderr的分配 文件引用。有关更多信息,请参见UNIX环境中SAS分配的文件引用 信息。
例如,在下面的SAS命令中,文件 myinput用作源程序,文件myoutput和mylog 分别用于程序输出和日志。
sas-stdiomyoutput 2>mylog
如果您使用的是C shell,那么应该 使用括号:
(sas-stdiomyoutput)>&输出日志
使用-stdio,您需要一个简短的SAS程序,该程序可以指示数据集中是否存在变量,或者可能发出数据集中的变量列表以供进一步的shell处理。Proc CONTENTS
步骤简短而甜蜜
大海捞针
sasfile=<path to data set file>/<dataset>.sas7bdat
needle=GROUP
echo "Proc CONTENTS data=""$sasfile""" | sas -stdio | grep $needle
谢谢你的建议。我使用的命令与你建议的相同。它适用于rest变量,但不适用于“组”变量。我不确定SAS数据集有什么问题。我仔细检查了变量名的命令。SAS数据集使用专有格式存储在磁盘文件中。可能存在编码和存储方法无法生成您在对grep确定的单词进行纯文本检查时所需的信息。您是否尝试将
字符串的输出进行greppingstrings$sasdataset | grep-i GROUP
Hi Richard,是的,我将SAS数据集变量名称保留在字符串中,然后从UNIX命令搜索SAS数据集中的那些字符串(SAS变量)。请更新显示UNIX命令输出的问题strings$sasfile
sasfile=<path to data set file>/<dataset>.sas7bdat
needle=GROUP
echo "Proc CONTENTS data=""$sasfile""" | sas -stdio | grep $needle
echo "Proc CONTENTS noprint data=""$sasfile"" out=list;data _null_;set list;file print;put name;"
| sas -stdio
| grep -i "GROUP"