Since internally test steps are represented as XML containing HTML, you'd need something capable of parsing this kind of thing (line breaks mine for readability):
<DIV>
<P>Click edit icon</P>
</DIV>
<DIV>
<P>User is directed to announcement edit page</P>
</DIV>
<DIV>
<P>Click anywhere else on the widget header</P>
</DIV>
<DIV>
<P>Widget visibility toggles between header-only and full</P>
</DIV>
Or - the raw database content (again, I've added line breaks for readability):
<steps id="0" last="2">
<step id="1" type="ValidateStep">
<parameterizedString isformatted="true"><DIV><P>Click edit icon</P></DIV>
</parameterizedString>
<parameterizedString isformatted="true"><DIV><P>User is directed to announcement edit page</P></DIV>
</parameterizedString>
<description></description>
</step>
<step id="2" type="ValidateStep">
<parameterizedString isformatted="true"><DIV><P>Click anywhere else on the widget header</P></DIV>
</parameterizedString>
<parameterizedString isformatted="true"><DIV><P>Widget visibility toggles between header-only and full</P></DIV>
</parameterizedString>
<description></description>
</step>
</steps>
Your best bet is to pull the text and run it through a text diff tool to find out what changed. As you can see from the internal representation of test steps, it's not trivial to figure out which step has changed.