我尝试使用sed重新格式化markdown文件中的标题但不知何故似乎无法正常工作。 问题是标题#符号和标题文本之间需要是一个空格,否则它没有正确显示。
所以我尝试运行几种变体的sed命令,在#符号
之后添加这个空格sed -i "s/<expression>/\1 /g" test.md
&LT;表达&GT;是:
^\(\s*#+\)
^\(\[#\]+\)
^\(\[\#\]+\)
-i应该在文件中替换它,但是当我用cat test.md
查看文件时,空间仍然缺失。我甚至在替代品的空间前面添加了反斜杠,但没有运气。
test.md的内容是以下示例数据:
#Heading 1
Some text
- a list entry
- another one
##Heading 2
text
##Heading 3
该命令应该导致例如第1行# Heading 1
我缺少什么?
答案 0 :(得分:0)
升级到pandoc
版本2后,可以自动插入ATX-style headers中新需要的空格,如下所示:
$ sed -i 's|\(^##*\)\([^# \.]\)|\1 \2|' test.md
-i
“原地”编辑降价文件。s|…|…|
是每行一次替换。\(…\)
表示搜索表达式中的一部分。\1
和\2
分别指搜索表达式的第一部分,第二部分。^##*
意味着该行应以一个哈希^
开始#
,然后是零个或多个哈希#*
。[^# \.]
开头。说明中的最后一项是该答案的区别和更简单的sed -i 's|^##*|& |'
。即使开始的哈希序列后面已经有空格,更简单的sed
命令仍会插入空格。
答案 1 :(得分:-1)
您需要转义加号,例如:
^\(\s*#\+\)