# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/(---[\s\S]*?)(cover:\s*")(!\[\[|\[\[)([^|\]]+)(\|[^\]]*)?(\]\]")([\s\S]*?---)/$1$2[[$4|^]]"$7/gm;t' <<< "---
created: 1
tags: 2
cover: \"![[一Attachments/47c4ec6d8e8816ce75f120a264f4130a_MD5.jpg]]\"
url: 3
---
---
created: 1
tags: 2
cover: \"[[一Attachments/47c4ec6d8e8816ce75f120a264f4130a_MD5.jpg]]\"
url: 3
---
---
created: 1
tags: 2
cover: \"![[一Attachments/47c4ec6d8e8816ce75f120a264f4130a_MD5.jpg|^]]\"
url: 3
---"
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