# <grep>

Searches files for a regular-expression and produces an XML report of the matches.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
output | file | Specifies the name of the output file. | True
pattern | string | Specifies the regular-expression to search for. | True
failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False
if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False
unless | bool | Opposite of `if`. If false then the task will be executed; otherwise, skipped. The default is false. | False
verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False

### Nested Elements:

#### <fileset>

The set of files in which the expression is searched.

#### </fileset>

### Examples

- Extract all TODO:, UNDONE: or HACK:- comment-tags from C# source files and write them to a file out.xml. (A xslt-stylesheet could then transform it to a nice html-page for your project-homepage, but that is beyond the scope of this example.)

  Path, File and LineNumber are automatically generated elements.

      <grep output="out.xml" pattern="// (?'Type'TODO|UNDONE|HACK): (\[(?'Author'\w*),(?'Date'.*)\])? (?'Text'[^\n\r]*)">
          <fileset>
              <include name="*.cs" />
          </fileset>
      </grep>

  The resulting XML file for a comment-tag 'TODO: [md, 14-02-2004] comment this method' will look like

      <?xml version="1.0" encoding="utf-8" ?>
      <Matches>
          <Match>
              <Type>TODO</Type>
              <Text>comment this method</Text>
              <Path>C:\MyProjects\MyPath</Path>
              <File>MyFile.cs</Filename>
              <LineNumber>146</LineNumber>
              <Author>md</Author>
              <Date>14-02-2004</Date>
          </Match>
          ...
      </Matches>

### Requirements

Assembly: NAnt.Contrib.Tasks (0.85.2479.0)