如何通过终端在#,##,###之前和之后插入空行

时间:2016-07-09 09:16:52

标签: bash macos shell sed terminal

我正在使用OSX El Capitan。我有一系列md文件,file1.md,file2.md,file3.md等。有些# ## ###之前或之后没有行。当我转换为epub文件时,这会中断。

样品:

<a name="introduction"></a>
## Introduction
...
some texts
### Next topic
...
some texts
### Topic 3
some texts

pandoc -S -o Laravel-doc-5.2.epub *.md

输出没有h1或h2标记。

## Introduction

所以我想在# or ## or ###行之前和之后插入空行如果没有行

我想要的是:

<a name="introduction"></a>

## Introduction

...
some texts

### Next topic

...
some texts

### Topic 3

some texts

如何通过终端或任何方法实现这一目标?

2 个答案:

答案 0 :(得分:2)

使用以下模式可能会按预期运行OS X

sed '/^#/{x;p;x;G;}' file.md

该命令进行交换,打印,交换,然后在#行上方/下方添加换行符。

https://www.gnu.org/software/sed/manual/sed.txt

答案 1 :(得分:1)

这应该适用于GNU系统:

sed 's/^#\{1,3\}.*/\n&\n/' file

在OSX上,您需要以下命令:

sed 's/^#\{1,3\}.*/\'$'\n&\'$'\n'/' file

或只是

sed 's/^#\{1,3\}.*/
&
/' file

抱歉,我无法测试OSX上的命令,我指的是:http://nlfiedler.github.io/2010/12/05/newlines-in-sed-on-mac.html