/*-------------------------------------------------------------------

DISCLAIMER:

THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR

CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT

LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,

MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR

ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED

AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF

THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS

GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES

----------------------------------------------------------------------*/

 

/*--------------------------------------------------------------------*/

/* grep:  search files for text patterns                              */

/* Usage: grep pattern FN [FT [FM]]                                   */

/* References: https://sites.google.com/site/mike99mac/               */

/*--------------------------------------------------------------------*/

Address COMMAND

Parse Arg args                       /* get all arguments             */

Parse Var args pattern args          /* pattern remains mixed case    */

Parse Upper var args fn ft fm .      /* fn, ft and fm are upper cased */

If (pattern = '' | pattern = '?') Then Do

  If (pattern = '') Then Say 'Error: Missing pattern'

  Say 'Name:  grep - search files for text patterns'

  Say 'Usage: grep pattern FN [FT [FM]]'

  Exit 1

End

'PIPE COMMAND LISTFILE' fn ft fm '| STEM files.'

If (files.0 = 0) Then Do

  Say 'No files found matching' fn ft fm

  Exit 2

End

Do i = 1 to files.0

  'PIPE |<' files.i '| locate /'||pattern||'/ | stem lines.'

  Do j = 1 to lines.0

    Say files.i||':' lines.j

  End

End