# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/<\s*img\s+([^>]*=(?:\".*?\"|\'.*?\'))[\s\w\-]*>/<img $1\/>/gim;t' <<< "<img src=\"images/a.jpg\" title=\"test\"><br/>
<img src=\"b.jpg\" />
<imgi src=\"b.jpg\" >
<img src=\"a/b.jpg\" >
<span><img src=\"ab.jpg\"></span>
<img src=\"\" title=\"\">
<img src=\"\" data-val>
<img src=\"2\" / >
<img src=\"c.jpg\" title=\"a'>b\">
<img src=\"c.jpg\" title='a\">b'>
<img src=\"c.jpg\" title='a>=b\"=>' >"
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