# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/(?:\s)*<task action="4" id="94(\d\d\d)00(\d\d)">(?:\s)*<release>(?:\s)*<item type="cost" vitality="\d"(?:\s)*\\/>((?:\n|.)*?)<item type="param(?:(?:\n|.)*?)(?=<\\/win)((?:\n|.)*?)<\\/release>(?:\s)*<\\/task>(?:\s)*/\n\n\n\n<stroy id="$17$2" areaid="0" startid="-1" endid="-1" maxnum='0' interval='0' count="0" type='3'>$3$4<\/stroy>\n\n/gm;t' <<< " <task action=\"4\" id=\"941010010\">
<release>
<item type=\"cost\" vitality=\"1\" />
<item type=\"fight\" npcid=\"1010010\">
<win>
<item type=\"aside\" content=\"[color=#ff7e53]你胜利了![/color]\" auto=\"true\" />
<item type=\"random\">
<item probability=\"0.001\">
<item type=\"reward\" yueli=\"300\" money=\"100\" auto=\"true\">
<item id=\"2801\" num=\"1\" />
</item>
</item>
<item probability=\"0.001\">
<item type=\"reward\" yueli=\"300\" money=\"100\" auto=\"true\">
<item id=\"2901\" num=\"1\" />
</item>
</item>
<item probability=\"0.001\">
<item type=\"reward\" yueli=\"300\" money=\"100\" auto=\"true\">
<item id=\"3001\" num=\"1\" />
</item>
</item>
<item probability=\"0.001\">
<item type=\"reward\" yueli=\"300\" money=\"100\" auto=\"true\">
<item id=\"3101\" num=\"1\" />
</item>
</item>
</item>
<item type=\"param\" key=\"fight-1010010\" action=\"update\" value=\"1\" />
</win>
<lose>
<item type=\"aside\" content=\"[color=#ff7e53]你被{rnpc}打倒在地![/color]\" auto=\"true\" />
</lose>
</item>
</release>
</task>"
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for SED, please visit: https://www.gnu.org/software/sed/manual/html_node/The-_0022s_0022-Command.html