|
|
楼主

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