![如何获取标题并从 Markdown 文件中删除某些字符](https://linux22.com/image/213999/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E6%A0%87%E9%A2%98%E5%B9%B6%E4%BB%8E%20Markdown%20%E6%96%87%E4%BB%B6%E4%B8%AD%E5%88%A0%E9%99%A4%E6%9F%90%E4%BA%9B%E5%AD%97%E7%AC%A6.png)
我有 Markdown 文件,示例如下:
---
id: http
title: Title can be anything
sidebar_label: HTTP API
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
export let Bubble = ({ item }) => {
return (
<div>
<div style={{ display: 'flex', fontFamily: 'monospace', borderRadius: '3px', backgroundColor: '#ddd', display: 'inline', padding: '5px'}}>
{item}
</div>
<div className=twentypx/>
</div>
);
}
## This title can be anything too
bla bla
每个文件在---
和之间都有不同的内容##
。我想获得标题,并且我想将---
上面的内容替换##
为# Title can be anything
所以期望的最终结果应该是:
# Title can be anything
## This title can be anything too
bla bla
请注意,其他文件的标题不同。我怎样才能用 Bash 做到这一点?
答案1
使用sed
$ sed -E '/title:/{s/[^ ]* (.*)/\1/;h};/^-/,/^}/d;/^$/{x;s/^/# /;G}' input_file
# HTTP API
## General & Auth
bla bla
答案2
使用 Perl 一行代码:
$ perl -0pe 's/.*^title:\s*([^\n]+\n).*(?=## General)/# $1\n/ms' file
# HTTP API
## General & Auth
bla bla