SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 829|回复: 0
打印 上一主题 下一主题

A SAS MACRO TO DO STRING SEARCH IN A FOLDER

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-10-22 13:24:02 | 只看该作者

A SAS MACRO TO DO STRING SEARCH IN A FOLDER

From Wensui Liu's blog

<font face="monospace"><span style="background-color&#58;#ffffff"><font color="#000080"><b><font face="'Courier New'"><span style="font-size&#58;small">data</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small"> driver;<br />  </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">infile</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">datalines</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> truncover;<br />  </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">input</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> string $ </span></font><span style="background-color&#58;#ffffff"><font color="#2e8b57"><b><font face="'Courier New'"><span style="font-size&#58;small">1</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small"> - </span></font><span style="background-color&#58;#ffffff"><font color="#2e8b57"><b><font face="'Courier New'"><span style="font-size&#58;small">100</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small">;<br /></span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">datalines</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">;<br />woe<br />fmt<br />;<br /></span></font><span style="background-color&#58;#ffffff"><font color="#000080"><b><font face="'Courier New'"><span style="font-size&#58;small">run</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small">;<br /><br /></span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">%macro</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> grep(path = , ext = , driver = , str = );<br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*************************************************;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* THIS MACRO IS TO DO A STRING SEARCH FUNCTION  *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* SIMILAR TO GREP IN UNIX                       *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* --------------------------------------------- *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* PARAMETERS&#58;                                   *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*  path  &#58; the path to be searched              *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*  ext   &#58; file extension to be searched        *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*  driver&#58; the driver table containing strings  *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*          to search for                        *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*  str   &#58; field name containing strings in the *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*          driver table                         *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* --------------------------------------------- *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* OUTPUT&#58; 1 txt file per string searched        *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* --------------------------------------------- *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">* LIMITATION&#58; only works for UNIX               *;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /></span></font><span style="background-color&#58;#ffffff"><font color="#008000"><font face="'Courier New'"><span style="font-size&#58;small">*************************************************;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br /><br /></span></font><span style="background-color&#58;#ffffff"><font color="#000080"><b><font face="'Courier New'"><span style="font-size&#58;small">data</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small"> </span></font><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">_null_</span></font></font><font face="'Courier New'"><span style="font-size&#58;small">;<br />  </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">set</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> </span></font><font color="#0000ff"><b><font face="'Courier New'"><span style="font-size&#58;small">&amp;driver</span></font></b></font><font face="'Courier New'"><span style="font-size&#58;small">;<br />  i + </span></font><span style="background-color&#58;#ffffff"><font color="#2e8b57"><b><font face="'Courier New'"><span style="font-size&#58;small">1</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small">;<br />  </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">index</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> = </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">put</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">(i, z3.);<br />  cmd   = </span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">&quot;find %trim(&amp;path) -name '&quot;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">||</span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">&quot;%trim(&amp;ext)&quot;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">||</span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">&quot;' | xargs grep -i '&quot;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br />          ||strip(</span></font><font color="#0000ff"><b><font face="'Courier New'"><span style="font-size&#58;small">&amp;str</span></font></b></font><font face="'Courier New'"><span style="font-size&#58;small">)||</span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">&quot;' &gt; &quot;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">||</span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">index</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">||</span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">'_'</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"><br />          ||</span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">translate</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">(strip(</span></font><font color="#0000ff"><b><font face="'Courier New'"><span style="font-size&#58;small">&amp;str</span></font></b></font><font face="'Courier New'"><span style="font-size&#58;small">), </span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">'_'</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">, </span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">' '</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">)||</span></font><span style="background-color&#58;#ffffff"><font color="#a020f0"><font face="'Courier New'"><span style="font-size&#58;small">&quot;.txt&quot;</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">;<br />  </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">put</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> cmd;<br />  </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">call</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> </span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">system</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">(cmd);<br /></span></font><span style="background-color&#58;#ffffff"><font color="#000080"><b><font face="'Courier New'"><span style="font-size&#58;small">run</span></font></b></font></span><font face="'Courier New'"><span style="font-size&#58;small">;<br /><br /></span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">%mend</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small"> grep;<br /><br /><font color="#0000FF"></font>%grep(path = /yourpath/, ext = *.</span></font><span style="background-color&#58;#ffffff"><font color="#0000ff"><font face="'Courier New'"><span style="font-size&#58;small">log</span></font></font></span><font face="'Courier New'"><span style="font-size&#58;small">, driver = driver, str = string); </span></font><br /></font>
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 20:18 , Processed in 0.591378 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表