【问题标题】:Replace text between 2 particular lines in a text file using sed使用 sed 替换文本文件中 2 个特定行之间的文本
【发布时间】:2019-01-19 13:58:01
【问题描述】:

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

我有一个 Markdown 文件,例如:

.
.
.
## See also

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

我希望在## See also## Introduction 之间用.html) 替换所有出现的.md)

.
.
.
## 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来说太复杂的话)?

【问题讨论】:

    标签: regex bash text awk sed


    【解决方案1】:
    $ sed '/## See also/,/## Introduction/s/\.md/.html/g' file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2022-10-21
      • 2021-09-25
      • 2019-03-22
      • 2017-12-20
      相关资源
      最近更新 更多