使用shell脚本标准化md文档中图片

使用shell脚本标准化md文档中图片

背景:

Typro的md文档,提交到gitee等web端后,路径不规范图片显示异常。

了解得知,web中的md解析器,路径中空格等特殊字符需URL转移。否者无法解析。

本文使用shell脚本标准化md文档中图片

在这里插入图片描述

图片添加./相对路径

gitee的md解析器,不带./路径不影响展示,添加相对路径只是为了前后设置一致

步骤分解

  1. find ./ -name "*.md找到所有md文件

  2. 使用sed替换,把](替换上相对路径 ](./。如把![image-2022](1234.assets/image-1234.png)转化为![image-2022](./1234.assets/image-1234.png)

特殊情况处理:

  • 原始已经是![image-2022](./1234.assets/image-1234.png)的,会被处理为![image-2022](././1234.assets/image-1234.png),需要重新复原
  • 超连接的![超链接](http://www.)会被处理为![超链接](./http://www.),需避免误修改
  1. 最终脚本,直接粘贴即可使用
pattern="]("
replace="](.\\/"
find ./ -name "*.md"|xargs.exe -i sed -i s/"$pattern"/"$replace"/g {}

patternDouble="\\.\\/\\.\\/"
replaceDouble="\\.\\/"
find ./ -name "*.md"|xargs.exe -i sed -i s/"$patternDouble"/"$replaceDouble"/g {}

patternhttp="\\.\\/http"
replacehttp="http"
find ./ -name "*.md"|xargs.exe -i sed -i s/"$patternhttp"/"$replacehttp"/g {}

4 执行shell

在这里插入图片描述

替换效果

在这里插入图片描述

图片路径空格URL转移

gitee官方的解释是,md中链接等不可存在空格,需要urlencode。链接

实现shell

由于空格很多,我们需要得到图片所在的文件和对应行号、通过替换相应行号的空格。

grep 'image' -EIrn  ~/Documents/mybook/mybook/ --include="*.md" |grep '(' |grep ' '|awk -F:  '{printf "sed -i \"%d s/%s/%s/g\" \"%s\" \n" ,$2," ","%20",$1 }|"sh" '

步骤分解

  1. grep出图片路径与所在行数,以便做替换
# -r 递归查找 -n显示行号 -I忽略二进制
# --include="*.md" 只搜索md文件
grep 'image' -Irn  ~/Documents/mybook/mybook/ --include="*.md" |grep '(' |grep ' '

在这里插入图片描述

  1. 提取出文件路径和行号的对应关系

通过观察可知,grep使用:做间隔,我是用awk完后字符串分割

# -F 分割符、默认是空格
# OPS 
awk -F: 

已经拿到文件路径和行号的对应

在这里插入图片描述

  1. 使用printf拼接出sed

使用占位符利于阅读

printf "sed -i \" %d s/%s/%s/g \" \"%s\" \n" ,$2," ","%20",$1

sed已经拼接oK

在这里插入图片描述

加上sh执行后效果

在这里插入图片描述

最终效果

图片正常展示

在这里插入图片描述

后记

  1. awk的用法很巧妙,可以查看链接

  2. typro默认的图片设置可以优化一下,以方便web浏览

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值