表格数据转换为Markdown表格格式脚本工具–t2mk.awk

表格数据转换为Markdown表格格式脚本工具–t2mk.awk

t2mk.awk工具的作用:从Excel表格或者HTML页面表格复制一段表格内容,想要转换成Markdown表格格式,这时就可以用到t2mk.awk命令了,也许你会说网上有很多在线Markdown表格转换页面工具,是的,但你不一定什么数据都希望暴露在网络上吧,还是自己写一个工具更加方便一些。

本文介绍下t2mk.awk脚本工具如何使用,如果你想要深入学习Awk,可以来这里阅读电子书教程精通Awk编程 。下面看看这个工具怎么使用的吧:

首先,看个示例数据:

Header1 Header2 Header3
Data1   Data2   Data3

Data11  Data21  Data31
Data12  Data22  Data32
Data13  Data23  Data33

接下来执行如下命令:

$ t2mk.awk

执行命令后,你就可以将内容粘贴到命令行的下面了,粘贴完成后按Ctrl+D快捷键结束脚本,转换后的格式为:

| Header1| Header2| Header3|
|:---|:---|:---|
| Data1| Data2| Data3|
| Data11| Data21| Data31|
| Data12| Data22| Data32|
| Data13| Data23| Data33|

在Markdown文档中展示的形式为:

Header1 Header2 Header3
Data1 Data2 Data3
Data11 Data21 Data31
Data12 Data22 Data32
Data13 Data23 Data33

t2mk.awk脚本工具怎么样?是不是很有趣?下面附上脚本内部的代码,也可以来 awesome-shell-script Github地址 看下还有些什么有趣的脚本工具吧。

t2mk.awk内容:

#!/usr/bin/awk -f
# table data to markdown table format
# 两列用竖线分割 , 第一行为标题
BEGIN{
    if(ARGC > 1) {
        for(i = 1; i<ARGC; i++){
            if( ARGV[i] == "-F" || ARGV[i] == "+F" ){
                FS = ARGV[i+1]
                printf("Change FS=[%s]\n\n",FS);
                ARGV[i]=""
                ARGV[i+1]=""
            }
        }
    }
}
NR==1{ # 第一行作为标题
    max_col = NF
}
NR==2{ # 第二行,开始前输出表格的分隔符线
    txt = ""
    for( i = 0; i < max_col;i++)
        txt = txt "|:---"
    cnt[maxl++] = txt "|"
}
NF==max_col{ # 对列数为max_col的行进行格式化处理
    txt = ""
    gsub("\\|","\\\\|")
    gsub("<","\\<")
    gsub("&","\\\\&")
    for( i = 1; i <= max_col;i++)
        txt = txt "| " $i
    cnt[maxl++] = txt "|"
}END{  # 最后输出转换后的Markdown表格格式
    print("\n\n")
    for(j=0; j < maxl; j++)
        printf("%s\n",cnt[j])
}

最后,附赠一个我自己做的Awk命令快查参考图(4K高清图片)。

Awk命令快查参考-4K.png

转载本文时请注明出处及本文链接地址表格数据转换为Markdown表格格式脚本工具–t2mk.awk

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注