文章目录
  1. 1. 如何将印象笔记导为markdown
    1. 1.1. 一,将印象笔记中技术分类的笔记全部导出
    2. 1.2. 二,Pandoc批量将html转为markdown
    3. 1.3. 三,过滤转换出的markdown敏感内容

如何将印象笔记导为markdown

由于想把自己多年的印象笔记里的技术笔记都转成markdown导出,但目前印象笔记不支持直接导出evernote,怎么办?google了一下,发现还没有直接导出的,只发现马克飞象可以直接绑定印象笔记和evernote国际版,绑定了以后可以直接在马克飞象上面写文章,然后同步到evernote上去,但是我需要的是把原来evernote上的笔记全部导出为markdown格式,目前evernote只支持导出为html和enex格式,看来只能从这里入手了。

一,将印象笔记中技术分类的笔记全部导出

我是mac电脑,安装的是印象笔记客户端,直接在文件–>导出笔记(格式选html),但是问题来了,导出的是批量的html,目前我们也没有看到有可以批量将html转成markdown的工具,所以就只能自己用脚本摸索一个了。


目前我知道的比较流行的将html转为markdown的工具有:
1.MarkdownRules.

这款工具将html转markdown是在线上的,美中不足的是,它不支持 < pre> 这类的标记

2.Pandoc.


这款工具是就非常强大了,它不公可以转html到markdown,还可以对markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs Org-Mode, Txt2Tags, Microsoft Word docx, LibreOffice ODT, EPUB, or Haddock markup 等十几种格式文档相互转换。但是,同样的,对< pre >标记的支持不足,mac用户可以通过home brew 进行安装

3.html2text.

这是一款python写的工具,它相比前两款对< pre >标记解析有着更出色的表现,但也有些情况解析不了

我选择了pandoc对我的东西进行转换

二,Pandoc批量将html转为markdown

Pandoc真的是个好东西!能迅速在很多种文件格式之间转来转去!超级方便!转换速度超级快!超级漂亮!

然而我只用到了Markdown转html和markdown而已……

好像Pandoc并不支持批量转换啊,一直敲命令我也受不了。那就现学现卖写了个sh文件来玩。

#!/bin/sh
function ergodic(){
  for fullname in `ls $1`
  do
    name=${fullname%.*}
    ext=${fullname##*.}
    if [ "$ext"x = "html"x ]
    then
      echo $name
      pandoc $name.html -o $name.md
    fi
  done
}

IFS=$'\n'
INIT_PATH=".";
ergodic $INIT_PATH

想学bash编程,可以参考这里,有比较全的bash语法

如果只是想和我一样,想速学速用,那就看这里吧

逻辑是这样的:首先用ls命令找出文件夹下所有文件名,获取文件名部分和后缀名部分。如果后缀名为html,就让pandoc进行转换去。

其他的么……sh语法我也不会啊……

另外,这里是pandoc参考手册,如果需要转换成其他格式的话可以参考这里进行配置。

例如写成pandoc -f markdown -t docx $name.md -o $name.docx。默认就是markdown to docx

78款好用的markdown工具

markdown here

markdown语法

三,过滤转换出的markdown敏感内容

导出的md文件有以下两问题需要解决:

  • 由于我的目的是要将导出的markdown都上传到我的博客上去,而转出的markdown内容总有些效果不是那么理想,所以如果有特殊符号标识的话,我的博客解析器解析不了,会出错的。

  • 我的博客对md文件内容需要一些标记描述来作为分类、标签、标题等显示,格式是这样的:

---
title: 如何将印象笔记导为markdown
date: 2020-04-29
categories: 专业技术(印象笔记)
tags: 从印象笔记导入
---

我的解决方案是用sed工具

这个工具在linux和unix环境上的用法是有些差异的,稍后会说明

再次用bash解决:

#!/bin/sh
function ergodic(){
 for fullname in `ls $1`
  do
name=${fullname%.*}
ext=${fullname##*.}
if [ "$ext"x = "md"x ]
then
  echo $name
  # grep -o 输出匹配的字符串
  #echo $name | grep -o [^][,_%$\“\ ]

lineStr="---"
title="title: $name"
dateStr="date: 2020-04-29"
categories="categories: 专业技术(印象笔记)"
tags="tags: 从印象笔记导入"
  # titlePost="--- title: $name <br/> categories: 专业技术 印象笔记 tags: 从印象笔记导入 <br/> ---"
  
  echo "categories is" $categories
  # 在内容第一行前面插入文本
  sed -i "" -e $'1 i\\\n'"$lineStr" $fullname
  # 在内容第一行后面插入文本
  sed -i "" -e $'1 a\\\n'"$title" $fullname
  sed -i "" -e $'2 a\\\n'"$dateStr" $fullname
  sed -i "" -e $'3 a\\\n'"$categories" $fullname
    sed -i "" -e $'4 a\\\n'"$tags" $fullname
    sed -i "" -e $'5 a\\\n'"$lineStr" $fullname

  sed -i "" -e $'6 a\\\n'"# $name" $fullname

    
   sed -i "" -e $'40 a\\\n'"<!--more-->" $fullname        
  

fi
 done
}


IFS=$'\n'
INIT_PATH=".";
ergodic $INIT_PATH

可能看了sed的使用语法后,发现我的写法跟语法不太一样,这是因为我是mac电脑,是unix内核,使用的时候不管是插入还是替换,都必须要在sed -i 后面加空“”号和 -e $,至于为什么,请参考这里

好了,新年要棒棒的,现在要开始找工作了。。。。。

文章目录
  1. 1. 如何将印象笔记导为markdown
    1. 1.1. 一,将印象笔记中技术分类的笔记全部导出
    2. 1.2. 二,Pandoc批量将html转为markdown
    3. 1.3. 三,过滤转换出的markdown敏感内容