使用sed替换文本文件中2行之间的文本

时间:2018-08-12 19:25:13

标签: regex bash text awk sed

有人问过类似的问题,但它们是针对Powershell的。

我有一个Markdown文件,例如:

.
.
.
## See also

- [a](./A.md)
- [A Child](./AChild.md)
.
.
.
- [b](./B.md)
.
.
.
## Introduction
.
.
.

我希望将.md).html)之间的所有## See also替换为## Introduction

.
.
.
## See also

- [a](./A.html)
- [A Child](./AChild.html)
.
.
.
- [b](./B.html)
.
.
.
## Introduction
.
.
.

我在Bash中尝试过这种方式

orig="\.md)"; new="\.html)"; sed "s~$orig~$new~" t.md -i

但是,这将替换文件中的所有位置。但我希望替换仅发生在## See also## Introduction

之间

能否请您提出更改建议?我正在使用awk和sed,因为我对此不太熟悉。我也知道一些Python,是否建议在Python中进行这样的脚本编写(如果它对于sed或awk来说太复杂)?

1 个答案:

答案 0 :(得分:6)

$ sed '/## See also/,/## Introduction/s/\.md/.html/g' file
相关问题