我尝试像这样解析 terraform output
的输出:
terraform output -json all_admins |
sed -e "s/,/;\n/g" -e "s/^(\[|\])//g"
terraform output -json all_admins
导致:
["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4a2b2e2723247b0a2b2e27232464292527" rel="noreferrer noopener nofollow">[email protected]</a>","<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3d5c595054530f7d5c59505453135e5250" rel="noreferrer noopener nofollow">[email protected]</a>"]
当前结果:
terraform output -json all_admins |
sed -e "s/,/;\n/g" -e "s/^(\[|\])//g"
导致:
["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2f4e4b4246411e6f4e4b424641014c4042" rel="noreferrer noopener nofollow">[email protected]</a>";
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2342474e4a4d116342474e4a4d0d404c4e" rel="noreferrer noopener nofollow">[email protected]</a>"]
预期结果:
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7110151c181f403110151c181f5f121e1c" rel="noreferrer noopener nofollow">[email protected]</a>";
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e180858c888fd3a180858c888fcf828e8c" rel="noreferrer noopener nofollow">[email protected]</a>"
如何使用 sed 中的正则表达式优雅地摆脱 [
和 ]
?
最佳答案
您可以使用:
terraform output -json all_admins | sed 's/[][]//g; s/,/;\
/g'
# Example:
s='["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="355451585c5b04755451585c5b1b565a58" rel="noreferrer noopener nofollow">[email protected]</a>","<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="09686d6460673b49686d646067276a6664" rel="noreferrer noopener nofollow">[email protected]</a>"]'
echo "$s" | sed 's/[][]//g; s/,/;\
/g'
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4223262f2b2c730223262f2b2c6c212d2f" rel="noreferrer noopener nofollow">[email protected]</a>";
"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="debfbab3b7b0ec9ebfbab3b7b0f0bdb1b3" rel="noreferrer noopener nofollow">[email protected]</a>"
确保未转义的 ]
放置在括号位置 [...]
内的第一个位置,接下来是 [
。
请注意,sed 's/[][]//g' file
相当于 sed -E 's/\]|\[//g' file
>
关于regex - sed 用于用 ""替换特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66625107/