从命令行搜索 Jupyter notebook 降价单元格

Search Jupyter notebook markdown cells from command line

我使用 ag 来搜索我的笔记。我的笔记写在 Jupyter 笔记本中包含的 Markdown 文件和 Markdown 单元格中。

我可以用ag --markdown ...方便的搜索Markdown文件。如果可以用 Jupyter notebook 文件做类似的事情,那将非常方便。但这需要 ag 了解这些笔记本的格式。

我的问题:有没有办法在 Jupyter 笔记本文件中搜索 给定字符串的 Markdown 单元格?解决方案中使用的任何模式匹配器对我来说都是可以接受的(aggrepack、...)。

p.s. 笔记本是在 JSON 中编写的。这是一个示例:

$ head notebook.ipynb
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "THIS IS A MARKDOWN STRING"
   ]
  },
  {

我不知道 ag 是否可以与过滤器连接,但是 从笔记本文件中获取 Markdown 以下 Python 代码就足够了

import nbformat
from sys import argv
nb = nbformat.read(argv[1], nbformat.NO_CONVERT)
for cell in nb.cells:
    if cell.cell_type == 'markdown' : print(cell.source)

我希望使用 jq 过滤掉 python 笔记本的所有降价单元格。例如,如果你只是想吐出所有降价源,你可以使用以下内容:

$< notebook.ipynb | jq '.cells[]|select(.cell_type == "markdown")|.source[]'

jq 速度很快,在将 ipython 笔记本保存到 git 时用于更精细的解决方案,例如:Using IPython notebooks under version control