Markdown 파일에서 제목을 얻고 특정 문자를 제거하는 방법

Markdown 파일에서 제목을 얻고 특정 문자를 제거하는 방법

아래 예와 같이 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

관련 정보