자바스크립트를 활성화 해주세요

p037 Tab으로 구분된 테이블데이타를 Markdown 테이블로 변환하는 Powershell 함수

 ·  ☕ 2 min read

웹서핑에서 발견한 데이타를 포스트로 옮길 때가 있습니다. 브라우저에서 테이블 데이터를 마우스로 Drag해서 선택해 복사하면 클립보드에 내용이 들어갈 때, 컬럼에 대한 구분자(Delimeter)로 Tab 문자가 들어갑니다.

이를 다시 Markdown으로 작성할 때는 약간의 규칙이 필요합니다.

Markdown 테이블의 문법은 https://www.markdownguide.org/extended-syntax/#tables 에서 확인할 수 있습니다.

온라인 제너레이터와 같은 툴을 사용해도 됩니다만, 자동으로 만들게 할 때는 온라인 제너레이터를 사용할 수 없습니다.

그래서 간단히 Powershell로 만들어 보았습니다.

코드

단순히 Replace해서 더하는 로직을 사용했습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

Function ConvertTo-MarkdownTable {
    Param(
        [String] $Content
    )

    $arr = $Content.Split("`n")
    $Header = "| $(($arr[0].Split("`t")) -join " `| ")`n"

    $Delimiter = "| $((($arr[0] -replace '\S','-') -Split "`t") -join " `| ")`n"

    $Records = ""
    foreach($r in $arr[1..($arr.Length - 1)]) {
        $Records += "| $(($r -Split "`t") -join " `| ")`n"
    }
    
    return $Header + $Delimiter + $Records
}

테스트1

영문으로 테스트해봤습니다.

1
2
3
4
5
6
7
8
$content = @'
title1	title2	title3
1000	2000	aaa
3000	4000	bbb
5000	6000	ccc
'@

ConvertTo-MarkdownTable $Content

결과는 다음과 같습니다.

| title1 | title2 | title3
| ------ | ------ | ------
| 1000 | 2000 | aaa
| 3000 | 4000 | bbb
| 5000 | 6000 | ccc
title1title2title3
10002000aaa
30004000bbb
50006000ccc

테스트2

한글테스트입니다.

1
2
3
4
5
6
7
8
$content = @'
제목1	제목2	제목3
계란과자	2000	가
고구마깡	4000	나
고소미 	6000	다
'@

ConvertTo-MarkdownTable $Content

결과는 다음과 같습니다.

| 제목1 | 제목2 | 제목3
| --- | --- | ---
| 계란과자 | 2000 | 가
| 고구마깡 | 4000 | 나
| 고소미  | 6000 | 다
제목1제목2제목3
계란과자2000
고구마깡4000
고소미6000

테스트3

일본어테스트입니다.

1
2
3
4
5
6
7
8
9
$content = @'
会社名	従業員数	平均年齢	平均年収(万円)
Zホールディングス(株)	63	41.6	1105
LINE(株)	2457	34.5	771
クックパッド(株)	368	33.6	760
楽天(株)	7288	34.4	755
'@

ConvertTo-MarkdownTable $Content

결과는 다음과 같습니다.

| 会社名 | 従業員数 | 平均年齢 | 平均年収(万円)
| --- | ---- | ---- | --------
| Zホールディングス(株) | 63 | 41.6 | 1105
| LINE(株) | 2457 | 34.5 | 771
| クックパッド(株) | 368 | 33.6 | 760
| 楽天(株) | 7288 | 34.4 | 755
会社名従業員数平均年齢平均年収(万円)
Zホールディングス(株)6341.61105
LINE(株)245734.5771
クックパッド(株)36833.6760
楽天(株)728834.4755

레퍼런스

공유하기

tkim
글쓴이
tkim
Software Engineer