如何在Windows下用GNU SED在多行代码块前插入行并缩进块
实现方案
你可以直接用以下GNU sed命令完成需求,不需要用到缓冲区,仅通过范围匹配+行内动作分组即可实现:
# Git Bash/WSL等类Shell环境使用单引号版本 sed '/```/,/```$/{ /^```/i\=== s/^/ / }' test.md
如果是在Windows默认的CMD环境中执行,需要把单引号替换为双引号:
sed "/```/,/```$/{ /^```/i\=== s/^/ / }" test.md
命令逻辑说明
- 外层
/```/,/```$/匹配所有以开头、结尾的多行代码块范围,范围内所有行都会进入后续大括号的分组处理 - 分组内第一条规则
/^```/i\===:仅匹配代码块的起始行(即开头的```标记行),在该行之前插入=== - 分组内第二条规则
s/^/ /:给代码块内的每一行开头加4个空格完成缩进,写法比捕获整行替换更简洁
你提供的示例输入执行该命令后,输出和要求的结果完全一致。
内容的提问来源于stack exchange,提问作者flywire
相关产品推荐
相关产品推荐

