SAS中文论坛

标题: A SAS MACRO TO DO STRING SEARCH IN A FOLDER [打印本页]

作者: shiyiming    时间: 2010-10-22 13:24
标题: 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>




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2