diff --git a/README.md b/README.md
index 1d9b058..086ca66 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,7 @@ To a very limited extent the format is documented [here](https://www.toketaware.
* [Reversing The Order Of Child Nodes](#reversing-the-order-of-child-nodes)
* [Spreading Out Level 0 (Root) Nodes](#spreading-out-level-0-root-nodes)
* [Replacing Strings](#replacing-strings)
+ * [Match Statistics](#match-statistics)
* [Input Files](#input-files)
* [Nesting Level Detection](#nesting-level-detection)
* [Metadata](#metadata)
@@ -130,7 +131,8 @@ Specifiers are used to specify which nodes to operate on and can be in one of th
* A special value of `none`, matching no nodes.
* A level specifier of the form `@level:n` - where `n` is an integer, referring to the level number.
* A priority specifier of the form `@priority:n` - where `n` is an integer between 1 and 5. You can use `@prio:n` for short. You can use `@nopriority` or `@noprio` to match nodes where the priority has not been set.
-* A progress specifier of the form ``@progress:n` - where `n` is an integer between 0 and 100, representing percent complete. You can use `@prog:n` for short. You can use `@noprogress` or `@noprog` to match nodes where the progress has not been set.
+* A progress specifier of the form `@progress:n` - where `n` is an integer between 0 and 100, representing percent complete. You can use `@prog:n` for short. You can use `@noprogress` or `@noprog` to match nodes where the progress has not been set.
+* A shape specifier of the form `@shape:myshape` - where `myshape` is one of the shapes described in [iThoughts Shape Names](#ithoughtsshapenames). You can use `@noshape` to specify nodes where the shape hasn't been set.
**Notes:**
@@ -390,6 +392,27 @@ The `\1` in the replacement refers to this capturing group.
In general you can use the full flexibility of Python 3's `re.sub()` method.
+### Match Statistics
+
+When filterCSV checks nodes against each [specifier](#specifiers) you get statistics for how many nodes matched the criterion.
+You also get the number of nodes that matched no criteria in the run. \
+
+Here is a sample:
+
+```
+Match Statistics
+----------------
+Match count for RegEx 'A2': 3
+Match count for RegEx 'A1': 2
+Match count for RegEx '^A1': 1
+Match count for @level:1: 2
+Match count for @noshape: 0
+Match count for @shape:square: 1
+Match count for RegEx '^A$': 1
+Remaining unmatched: 0
+----------------
+```
+
### Input Files
Input files can be in one of six formats:
@@ -716,6 +739,7 @@ Comments aren't feasible with command line parameters - so using a command file
[tests/README.md](./tests/README.md) describes test files that you can study to become familiar with filterCSV.
+
## iThoughts Shape Names
The following shape names are defined by iThoughts.
@@ -735,6 +759,7 @@ The following shape names are defined by iThoughts.
square bracket
curved bracket
+
## iThoughts Icon Names
The following icon names are defined by iThoughts. You can use them in two places