使用 url 编码
- 
                                sed ':a;N;$!ba;s/\n//g' favicon.svg把 favicon.svg 文件所有行合并成一行 - :a定义标签 a
- N读取下一行并追加到 pattern space 中(带换行符)
- $!ba如果不是最后一行,跳转到标签 a,不断循环实现全文拼接
- s/\n//g把所有换行符删除,变成一整行字符串
 
- 
                                sed 's/"/'\''/g'把双引号 "替换成单引号'
- 
                                多个替换 
- #➜- %23
- <➜- %3C
- >➜- %3E
- ➜ %20
- =➜- %3D
- &➜- %26
- html 代码替换
- /rel="icon"/匹配包含字符串- rel="icon"的所有行
- { ... }对匹配到的行做一系列操作
- s|<link.*>|...|用后面的字符串替换整行- <link...>标签
pct ent 119
cd /mnt/storage/files/wwwroot/xxx/zero-nav/
# url 编码
FAVICON_DATA=$(sed ':a;N;$!ba;s/\n//g' favicon.svg | \
  sed 's/"/'\''/g' | \
  sed 's/#/%23/g; s/</%3C/g; s/>/%3E/g; s/ /%20/g; s/=/%3D/g; s/&/%26/g') \
&& echo $FAVICON_DATA
# 简单版
FAVICON_DATA2=$(cat favicon.svg | \
  sed 's/"/'\''/g' | \
  sed 's/#/%23/g;') \
&& echo $FAVICON_DATA2
echo -e '\n<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,'$FAVICON_DATA2'">\n';
# html 代码替换
sed -i '/rel="icon"/{
    s|<link.*>|'"$(echo "<link rel=\"icon\" type=\"image/svg+xml\" href=\"data:image/svg+xml,${FAVICON_DATA}\" />")"'|
}' index.html
sed -i 's/<link rel="alternate icon" href="favicon.ico" \/>//g' index.html使用 base64 编码
使用 base64 编码生成 Data URI,更稳妥一点(不过体积大一点)
# 使用 base64 编码文件内容
BASE64_DATA=$(base64 -w 0 favicon.svg)
echo -e "\n"$BASE64_DATA."\n"
echo -e '\n<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,'$BASE64_DATA'">\n';